IPB
Смайлики на все случаи жизни!

Здравствуйте, гость ( Вход | Регистрация )

 
Ответить в эту темуОткрыть новую тему
> Php компилятор разучился считать?, Полезная информация
Созидатель
сообщение 11.2.2007, 22:43
Сообщение #1


Старожил
Group Icon
Сообщений: 229
Регистрация: 11.2.2007
Пользователь №: 58
483893

Репутация:   4  

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

Довольно часто простые десятичные дроби вроде 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....

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


--------------------
Пользователь в офлайнеКарточка пользователяОтправить личное сообщение
Вернуться в начало страницы
+Цитировать в форуму быстрого ответаОтветить с цитированием данного сообщения
Ответить в эту темуОткрыть новую тему
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 



Всё для веб-мастера
Invision Power Board © 2007-  IPS, Inc. Сейчас: 6.2.2012, 0:39