先来个简单的例子,这个例子很多人喜欢,而且也最能说明问题。
$a = 0.58 *100; var(intval($a));
输出结果是 57,相信很多人也看过这类的说明,也有很多文章说不要相信浮点运算,任何语言都是。
接着我们来看看到底是怎么回事,其实在 0.58 * 100 时计算机内部二进制存储时是有误差的,只不过显示不出来而已。
0.58 * 100
那我们再做个实验。
$a = 57.9999999999999; echo $a;
上面显示的是 58,所以对于浮点类型的值,眼见不一定为实。