Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

TvoiForum.Net.Ru - Всё, что надо от жизни! _ Материалы по WEB-программированию _ Php компилятор разучился считать?

Автор: Созидатель 11.2.2007, 22:43

Точность числа с плавающей точкой.

Довольно часто простые десятичные дроби вроде 0.1 или 0.7 не могут быть преобразованы в свои внутренние двоичные аналоги без небольшой потери точности. Это может привести к неожиданным результатам: например,

Код
floor((0.1+0.7)*10)

или уже для совсем "....." wink.gif
Код
echo floor((0.1+0.7)*10)

скорее всего возвратит 7 вместо ожидаемой 8 как результат внутреннего представления числа, являющегося в действительности чем-то вроде 7.9999999999....

Это связано с невозможностью точно выразить некоторые дроби в десятичной системе счисления конечным числом цифр. Например, 1/3 в десятичной форме принимает вид 0.3333333....

Так что никогда не доверяйте точности последних цифр в результатах с числами с плавающей точкой и никогда не проверяйте их на равенство.

Русская версия Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)