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

![]() ![]() |
11.2.2007, 22:43
Сообщение
#1
|
|
![]() Старожил Сообщений: 229 Регистрация: 11.2.2007 Пользователь №: 58 483893 Репутация: 4 ![]() |
Точность числа с плавающей точкой.
Довольно часто простые десятичные дроби вроде 0.1 или 0.7 не могут быть преобразованы в свои внутренние двоичные аналоги без небольшой потери точности. Это может привести к неожиданным результатам: например, Код floor((0.1+0.7)*10) или уже для совсем "....." Код echo floor((0.1+0.7)*10) скорее всего возвратит 7 вместо ожидаемой 8 как результат внутреннего представления числа, являющегося в действительности чем-то вроде 7.9999999999.... Это связано с невозможностью точно выразить некоторые дроби в десятичной системе счисления конечным числом цифр. Например, 1/3 в десятичной форме принимает вид 0.3333333.... Так что никогда не доверяйте точности последних цифр в результатах с числами с плавающей точкой и никогда не проверяйте их на равенство. |
|
-------------------- | |
![]() ![]() |
| Invision Power Board © 2007- IPS, Inc. | Сейчас: 6.2.2012, 0:39 |