[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: 89.68 - 89.68 = ???
bodik10
Здравствуйте!
Имею такую проблему: числовые значения типа decimal (10,3) хранятся в базе MySQL. После выборки в РНР-скрипте добавляются 2 значения из базы (34.680 + 55.000) и вычитается из 89.68.
Вместо ожидаемого нуля РНР выводит 7.1054273576E-15 blink.gif . Подскажите, в чем причина?



Спустя 4 минуты, 54 секунды (28.01.2010 - 15:20) glock18 написал(а):
все просто - тип float имеет погрешность. это общеизвестный момент, относящийся к способу хранения этого типа в памяти, а значит не только к php, но и ко всем остальным языкам.

Спустя 2 минуты, 57 секунд (28.01.2010 - 15:23) bodik10 написал(а):
Цитата (glock18 @ 28.01.2010 - 12:20)
все просто - тип float имеет погрешность

и что делать? применять
sprintf()
или
number_format()
?

Спустя 34 минуты, 54 секунды (28.01.2010 - 15:58) Ice написал(а):
А если прям в базе резалт посчитать?

Спустя 25 минут, 4 секунды (28.01.2010 - 16:23) bodik10 написал(а):
Цитата
А если прям в базе резалт посчитать?

Очень много кода надо переписывать.

Мне просто интересно, почему эта погрешность типа float вылезла именно на этом выражении. В скрипте очень много операций с числами такого типа, и везде число выводится корректно.

Спустя 3 дня, 22 часа, 4 минуты, 51 секунда (4.02.2010 - 14:28) glock18 написал(а):
округляй до трех знаков и спи спокойно
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.