2013-05-30 5 views
-2

Когда я добавляю два поплавка в IRB консоли, то результат не как ожидалосьсложение два рубина поплавки дает неожиданный результат

10.43 + 4.56 # should be 14.99 

Но фактический результат

irb(main):001:0> 10.43+4.56 
=> 14.989999999999998 

Что вызывает это?

+3

спросил Bazillion раз раньше! Поиск точности и/или представления с плавающей запятой. –

+1

@MitchWheat. Не могли бы вы разместить ссылку? – Arjan

+1

Нет, как насчет того, что вы пытаетесь найти, и вы публикуете ссылку! Это не сложно! –

ответ

2

Ожидаемое поведение. Поплавки не гарантируются точность, потому что, короче говоря, компьютеры представляют собой двоичные системы (начиная с 2013 года) и не могут правильно представлять дробные значения. Вот почему вы получаете «неожиданные» результаты, когда на самом деле так оно и будет работать до тех пор, пока не будет бинарная машина, которая может правильно представлять дробные значения.

+0

@MitchWheat TIL, что двоичные системы могут правильно представлять фракции. Если, конечно, вы не имеете в виду две длинные единицы до десятичной точки и одну за другой. Время, чтобы пойти, делает некоторые исследования, кажется. – Woot4Moo

Смежные вопросы