PHP浮动精度,导致添加时出错

PHP浮动精度,导致添加时出错,php,Php,这是我问题的简化版本。下面是一个for循环: for ($i = 0.01; $i < 100; $i += 0.01) { echo $i; } ($i=0.01;$i

这是我问题的简化版本。下面是一个for循环:

for ($i = 0.01; $i < 100; $i += 0.01) {
    echo $i;
}
($i=0.01;$i<100;$i+=0.01)的
{
echo$i;
}

在某个时刻,
i
可能输出51.18999998。这造成了两个问题。首先,我无法使用
fmod
strpos
检测数字是整数还是小数。其次,它会影响输出的可读性。

使用浮点型整数值进行计数。我对PHP不熟悉,并且不清楚(它显示了一个浮点文本的
LNUM
grammer对象,该对象与整数文本重叠,但没有说明它们是如何区分的),但这可能会起作用:

for ($i = 1.; $i < 10000.; $i += 1.) {
    $t = $i * .01;
    echo $t;
}
用于($i=1;$i<10000;$i+=1){
$t=$i*.01;
echo$t;
}

请注意,在PHP中,浮点类型的特征可能会有所不同。在使用IEEE 754基本64位二进制浮点的系统上,在计数过程中出现舍入错误之前,您可以将整数值计算到253。

否,如果您认为它们是错误,那么您根本不理解。如果你阅读了我提供的链接中的内容,它描述了如何得到你期望的结果。@WeavingBird1917:你在问题中说“我也试图使I始终递增1,……但是有一点我会超过32位的最大整数。”这使你看起来像是将
$I
作为整数类型递增,这与在浮点类型中使用整数值不同。32位整数类型将在2**32处溢出。IEEE-754浮点类型在2**53之前不会溢出可表示整数。