我正在用php总结:
.1, .1, .1, .1, .1, .1, .1, .1, .1, .1
它产生结果1
,而应该给结果类似0.9999
这是我的代码
<?php
class Num
{
public static function fsum(...$num)
{
$s = 0;
foreach ($num as $n) {
$s = sprintf('%.f', $s) + sprintf('%.f', $n);
}
return sprintf('%.f', $s);
}
}
var_dump(Num::fsum(.1, .1, .1, .1, .1, .1, .1, .1, .1, .1));
非常感谢您
您的代码也可以使用(您有10个输入,所以0.1 * 10 = 1)。但是对字符串进行数学运算不是一个好主意。最好使用数字并格式化输出的数字。
class Num
{
public static function fsum(...$num)
{
$s = 0;
foreach ($num as $n) {
$s = $s + (float) $n;
}
return sprintf('%.f', $s);
}
}
var_dump(Num::fsum(.1, .1, .1, .1, .1, .1, .1, .1, .1));
您应该考虑使用bcmath
库进行精确的数学运算。尽管这里不是这种情况,但仍建议使用。
bcmath