2012-05-26 4 views
3

У меня есть поле в моей БД MySQL таблице типа DECIMAL (15,4)PHP нулевого поплавок возвращение истинного

Я никогда не испытывал это раньше, но если значение 0,0000 моего PHP, если заявление возвращается в реальности!

В проверке разумности я даже сделал:

if(0.0000) echo "Hello World";

И действительно, Hello World echo'd вне. Что, черт возьми, происходит? У кого-нибудь есть идеи?

+0

Ваша проверка работоспособности работает отлично для меня, PHP v5.2.6 – Toto

+0

То же самое здесь. 5.3.13 – n00b

+0

Да, она оценивалась как ожидалось на моем сервере с PHP 5.3.13, но оценивает неверный способ на другом сервере с той же версией PHP. Я думаю, что в php.ini должно быть задание: \ – Andy

ответ

0

У меня нет такого поведения в моей версии PHP (5.3.3).

Предлагаю лить номер bool перед выполнением проверки: if ((bool) $float).

1

Я думаю, проблема в том, что у вас есть строка "0.0000" от db, но не 0.0000.

Попробуйте снова:

if ((int)$your_value) echo "Hello World"; 
+0

Проверка работоспособности не включает строку. –

+0

@ KendallFrey Он сказал, что значение исходит от db, поэтому код в вопросе просто манекен, я думаю. – xdazz

+0

Он сказал, что он сделал проверку здравомыслия с этим заявлением. Я совершенно уверен, что буквальное значение не поступает из БД. –

3

Если это значение с плавающей точкой, выходящий из БД будет рассматриваться как строка, а не как числовые значения. Вы можете попробовать что-то это:

if(floatval($value) > 0) { ... } 

$value Где содержит значение из БД.

0

Я знаю, что прошло много времени с момента открытия этого вопроса, но я подумал, что это может помочь кому-то другому.

Поплавок является фактическим приближением к Real Number. Вы обнаружите, что не все Real numbers могут быть представлены float. Это может быть причиной того, что вы получаете неожиданные результаты. Вы должны прочитать: http://php.net/manual/en/language.types.float.php.

Если вам нужна более высокая точность, вы должны посмотреть на использование BC Math lib http://php.net/manual/en/ref.bc.php.

Смежные вопросы