[PHP浮点数问题] 如下的PHP代码输出的原因是什么?
程序员文章站
2022-05-11 22:33:00
...
注释中是该行的输出,可以看到当浮点数的个位数字为6、7、8、9时,输出的结果不符合预期。
var_dump(intval("10.40"*100)); // 1040
var_dump(intval("11.40"*100)); // 1140
var_dump(intval("12.40"*100)); // 1240
var_dump(intval("13.40"*100)); // 1340
var_dump(intval("14.40"*100)); // 1440
var_dump(intval("15.40"*100)); // 1540
var_dump(intval("16.40"*100)); // 1639
var_dump(intval("17.40"*100)); // 1739
var_dump(intval("18.40"*100)); // 1839
var_dump(intval("19.40"*100)); // 1939
然后再看: PHP浮点数的一个常见问题的解答 具体解释参见这里:
0.30000000000000004 原因是二进制无法精确表示1/10等等的小数,所有使用IEEE754标准存储浮点数内容的语言都存在这个问(功)题(能)
var_dump(intval("10.40"*100)); // 1040
var_dump(intval("11.40"*100)); // 1140
var_dump(intval("12.40"*100)); // 1240
var_dump(intval("13.40"*100)); // 1340
var_dump(intval("14.40"*100)); // 1440
var_dump(intval("15.40"*100)); // 1540
var_dump(intval("16.40"*100)); // 1639
var_dump(intval("17.40"*100)); // 1739
var_dump(intval("18.40"*100)); // 1839
var_dump(intval("19.40"*100)); // 1939
回复内容:
先看 关于PHP浮点数你应该知道的(All ‘bogus’ about the float in PHP)然后再看: PHP浮点数的一个常见问题的解答 具体解释参见这里:
0.30000000000000004 原因是二进制无法精确表示1/10等等的小数,所有使用IEEE754标准存储浮点数内容的语言都存在这个问(功)题(能)
上一篇: [转]NoSQL数据库的分布式算法
下一篇: 加密的sqlite3扩展DLL文件
推荐阅读
-
PHP中的&传值引用的问题,在foreach循环的结果能帮解释下输出的结果原理是什么? - 红藕香残
-
php-PHP调用.NET写的web service时异常,这一般是什么问题。异常错误信息如下
-
Yii2压缩PHP中模板代码的输出问题
-
PHP中的&传值引用的问题,在foreach循环的结果能帮解释下输出的结果原理是什么?,PHP
-
php-这是什么问题,我代码写错的问题吗?求助
-
Yii2压缩PHP中模板代码的输出问题
-
PHP中的&传值引用的问题,在foreach循环的结果能帮解释下输出的结果原理是什么? c# foreach javascript foreach c foreach
-
PHP中的&传值引用的问题,在foreach循环的结果能帮解释下输出的结果原理是什么? - 红藕香残
-
[PHP浮点数问题] 如下的PHP代码输出的原因是什么?
-
php-PHP调用.NET写的web service时异常,这一般是什么问题。异常错误信息如下