В MATLAB верно следующееПочему 0,1 * 10,0 == 1
0.1 * 10.0 == 1
Но 0,1 не представляется именно с плавающей точкой, так что я ожидал, что это не может быть правдой. Неужели мне просто повезло, и ошибка оказалась меньше, чем eps, поэтому она округлилась до 1?
MATLAB реализует IEEE 754, поэтому я считаю, что он должен применяться ко всем языкам. Но это post заставляет меня думать, что это может быть что-то особенное для MATLAB.
Python действительно оценивает true: >>> 0.99999999999999999 == 1 – ergonaut
Возможно, вам повезло, что да. Этот пост может обеспечить более глубокое понимание: http://stackoverflow.com/questions/686439/why-is-24-0000-not-equal-to-24-0000-in-matlab – rayryeng
'0.1 + 0.2 + 0.3 - 0.6 = 1.110223024625157e-16' while '0.1 + 0.2 + 0.3 + 0.4 - 1.0 = 0.0' (R2012b) :-) –