我想计算除法的整数部分。分子和分母(尤其是它们的精度)不应更改,因为它可能从一种计算变为另一种计算,同样以分母为例,其整数部分和小数部分可能不同。
我尝试使用Floor、ceil、round但它们都没有产生正确的结果。请看下面的代码,也许你会发现错误:
<?php
$valueArr = [
// should return 1999
199.90,
199.92,
199.95,
199.97,
// should return 2000
200.00,
200.02,
200.05,
200.07,
// should return 2001
200.10,
200.12,
200.15,
200.17,
];
$denominator = 0.1;
$resultArr = [];
foreach ($valueArr as $value) {
$key = (string) $value;
$result = floor($value / $denominator);
$resultArr[$key] = $result;
}
echo "Denominator:\n";
var_dump($denominator);
echo "\n";
print_r($resultArr);
给出结果:
Denominator:
float(0.1)
Array
(
[199.9] => 1999
[199.92] => 1999
[199.95] => 1999
[199.97] => 1999
[200] => 2000
[200.02] => 2000
[200.05] => 2000
[200.07] => 2000
[200.1] => 2000
[200.12] => 2001
[200.15] => 2001
[200.17] => 2001
)
在哪里:
[200.1] => 2000
是错误的,因为 (200.1 / 0.1) 的整数部分是 200 1。
您知道如何为$valueArr上述结果生成正确的结果吗?我做错了什么?
我正在使用 PHP 7.3.8 (cli)
SMILET
繁花如伊
跃然一笑
狐的传说