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