我的mySQL db表中有一个十进制类型字段(15,4)
我之前从未经历过这种情况,但如果值为0.0000我的PHP if语句返回true!
作为一项完整性检查我甚至做过:
if(0.0000) echo "Hello World";
果然,Hello World回声消失了。这到底是怎么回事?有人有任何想法吗?
答案 0 :(得分:3)
如果它是从DB发出的浮点值,它将被视为字符串,而不是数字值。你可以试试这个:
if(floatval($value) > 0) { ... }
$value
包含来自DB的值。
答案 1 :(得分:1)
我认为问题是你从db获得了一个字符串"0.0000"
,但没有0.0000
。
再试一次:
if ((int)$your_value) echo "Hello World";
答案 2 :(得分:0)
我的PHP版本(5.3.3)上没有这种行为。
我建议您在检查前将号码转换为 bool :if ((bool) $float)
。
答案 3 :(得分:0)
我知道自从这个问题被打开以来已经很久了,但我认为这可能有助于其他人。
浮点数实际上是Real Number
的近似值。您会发现并非所有Real numbers
都可以由浮点数表示。这可能是您获得意外结果的原因。你应该读一读
http://php.net/manual/en/language.types.float.php
如果你需要更高的精度,你应该看看使用BC Math lib http://php.net/manual/en/ref.bc.php。