PHP - 为什么 floor() 给我另一个 sams 计算的结果
PHP - Why floor() give me another result of sams calculation
for($i=0;$i<=15120;$i+=504){
echo ($i/60/8.4) . " - " .floor($i/60/8.4)."<br>";
}
结果(我做**问题):
0 - 0
1 - 1
2 - 2
3 - 3
4 - 4
5 - 5
6 - 6
7 - 6
8 - 8
9 - 8
10 - 10
11 - 11
12 - 12
13 - 13
14 - 13
15 - 15
16 - 16
17 - 17
18 - 17
等...
一开始我想我在所有计算中都应用了 "Floo" 但是(对于“7-6”行)还有 $i = 3528 :
3528 / 60 = 58,8 == Floor ==> 58 / 8 = 7.25
地板 7.25 =/= 6
因为 PHPs floating point precision
所以你的第 8 次计算不会 return 7,而是类似于 6.9999999999999999999999999999
因为这是双精度数,输出时将四舍五入为 7,试试这个:
$x = 6.9999999999999999999999999999999999999999999999999999999;
echo $x;
当您使用 floor()
时,它会(正确地)将其四舍五入为 6
for($i=0;$i<=15120;$i+=504){
echo ($i/60/8.4) . " - " .floor($i/60/8.4)."<br>";
}
结果(我做**问题):
0 - 0
1 - 1
2 - 2
3 - 3
4 - 4
5 - 5
6 - 6
7 - 6
8 - 8
9 - 8
10 - 10
11 - 11
12 - 12
13 - 13
14 - 13
15 - 15
16 - 16
17 - 17
18 - 17
等...
一开始我想我在所有计算中都应用了 "Floo" 但是(对于“7-6”行)还有 $i = 3528 :
3528 / 60 = 58,8 == Floor ==> 58 / 8 = 7.25
地板 7.25 =/= 6
因为 PHPs floating point precision
所以你的第 8 次计算不会 return 7,而是类似于 6.9999999999999999999999999999
因为这是双精度数,输出时将四舍五入为 7,试试这个:
$x = 6.9999999999999999999999999999999999999999999999999999999;
echo $x;
当您使用 floor()
时,它会(正确地)将其四舍五入为 6