如何在php中使用array_sum函数对包含超过15位数字的数组值进行求和

5
我需要对一个数组的值求和,数组如下: $arr = array('0' => 87.85749999999999823, '1'=>1); print_r(array_sum($arr)); 我得到的输出是88.8575,但我期望的是88.85749999999999823。
谢谢任何帮助。

不确定,但这可能是由于在某些语言中发生的浮点误差导致的。 - MarshallOfSound
2个回答

2

float类型的精度限制在14位数字。如果需要更高的精度,请尝试使用BC Math库。

<?php
echo "<br/>float<br/>";
$arr = array('0' => 87.85749999999999823, '1'=>1);
print_r(($arr));
print_r(bcadd($arr[0], $arr[1], 20));

echo "<br/>BCMath<br/>";
$arr = array('0' => "87.85749999999999823", '1'=>"1");
print_r(($arr));
print_r(bcadd($arr[0], $arr[1], 20));

1
您可以使用如下代码:
<?php
$arr = array('0' => '87.85749999999999823', '1'=>'1');
$res = 0.0;
foreach($arr as $val){
    $res = bcadd($res, $val, 20);
}
echo $res;

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接