Heim  >  Artikel  >  Backend-Entwicklung  >  [PHP浮点数问题] 如下的PHP代码输出的原因是什么?

[PHP浮点数问题] 如下的PHP代码输出的原因是什么?

WBOY
WBOYOriginal
2016-07-21 18:01:32760Durchsuche

注释中是该行的输出,可以看到当浮点数的个位数字为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浮点数你应该知道的(All ‘bogus’ about the float in PHP)
然后再看: PHP浮点数的一个常见问题的解答 具体解释参见这里:
0.30000000000000004 原因是二进制无法精确表示1/10等等的小数,所有使用IEEE754标准存储浮点数内容的语言都存在这个问(功)题(能)
Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn