循环增加3个小数点php
我需要一个循环,以增加数字的第三个小数点,打印应该像这样循环增加3个小数点php,php,for-loop,Php,For Loop,我需要一个循环,以增加数字的第三个小数点,打印应该像这样 1.1 1.101 1.102 1.103 ... 2.0 2.001 2.002 ... 2.1 2.101 ... for ($i = 1.1; $i <= 3; $i += .001){ echo $i . '<br />'; } 如果我使用 number_format($i,3) 我所有的数字都有3个小数点,比如 1.100,我需要它是1.1 我错过了什么? 尝试舍入值并将其存储在$i中: for
1.1
1.101
1.102
1.103
...
2.0
2.001
2.002
...
2.1
2.101
...
for ($i = 1.1; $i <= 3; $i += .001){
echo $i . '<br />';
}
如果我使用
number_format($i,3)
我所有的数字都有3个小数点,比如
1.100,我需要它是1.1
我错过了什么?
尝试舍入值并将其存储在$i中:
for ($i = 1.1; $i <= 3; $i += .001){
$i = round($i, 3);
echo $i . '<br />';
}
for($i=1.1;$i这应该适合您:
(这里我只是使用并指定它应该显示一个双精度(lf
->longfloat)到第三个小数点)
echo sprintf(“%.3lf”,$i)。”
;
如果您想知道为什么会得到这样的结果,请参见:
顺便说一句:这种方法也有副作用,它显示:1.560
而不是1.56
了解浮点数。基本上,不是所有的十进制数都可以用浮点数精确表示
尝试将数字四舍五入:
for ($i = 1.1; $i <= 3; $i += .001){
echo round($i,3) . '<br />';
}
对于($i=1.1;$i这是浮点运算工作方式的影响。这可能会导致精度低下。问题是计算中的错误会累积起来。因此,单靠舍入通常并不安全。它的安全性取决于所做的加法数,因此这里的迭代次数
请尝试这样做:
for ($i = 1100; $i <= 3000; $i++) {
echo $i/1000 . "<br>\n";
}
用于($i=1100;$i这与浮点数在PHP@MatejŽvan中的存储方式有关,这个问题不是PHP特有的,它是浮点数算术的一般效果。@按钮确实如此,请尝试一下。为什么不应该呢?它实际上是对的,但我不明白为什么在这种情况下,舍入会有所不同?您可以吗te?如前所述:错误与迭代次数相加(好吧,这是简化的,但仍然正确)。仅对输出进行四舍五入是不安全的。工作方法是对总和进行四舍五入,因此类似($i=1.1;$i@Benn)的,抱歉,忘记了ping您。请参见上文:^^^现在理解,但供我使用(我将其用于em行高度)这一轮似乎是好的,足够精确。如果这是更大的迭代,我会用你的解决方案。谢谢你的信息
for ($i = 1.1; $i <= 3; $i += .001){
echo round($i,3) . '<br />';
}
for ($i = 1100; $i <= 3000; $i++) {
echo $i/1000 . "<br>\n";
}