Погрешности вычислений с fp

Silex

unitecsys
Погрешности вычислений с fp

Кусок кода:
PHP:
<p>Всего оплата - <b><?=$all?></b><br>
Выплачено - <b><?=$pay[1]?></b><br>
Долг - <b><?=$all-$pay[1]?></b>
т.е. все до безобразия просто. Столкнулся с тем, что при $all=$pay[1]=43.8 (на экран выводится именно это число) имеем
PHP:
$all-$pay[1] = 7.105427357601E-15
. Для других чисел такое не наблюдается. Откуда такое берется? А если бы мне пришлось где-то с нулем сравнивать, что тогда?
 

RomikChef

Guest
у тебя, скорее всего, один операнд - строка, а другой - float
 

Silex

unitecsys
Да нет, $all = CУMMA(float*int+float*int), $pay[1] - выборка из базы, тип поля float. И почему, главное, с другими числами такого не происходит?
 

Sleeper

Guest
а если их обе принудительно привести к флоату, что получится?
 

tony2001

TeaM PHPClub
это формат хранения.
а возвращается из базы ВСЕГДА строка.
 

Silex

unitecsys
Оп-па! Никогда бы не подумал. Спасибо.
Получается, что после выборки любого float из базы перед дальнейшим использованием его нужно привести к float?
 

RomikChef

Guest
да, но дело не в этом.
а в том, что перед тем, как отечать мне, надо было сделать echo gettype()...
 

Silex

unitecsys
Сорри, уже начал откапывать на винте "Как ПРАВИЛЬНО читать мануал" :) Еще раз спасибо.
 
Сверху