可能有PHP阶乘和

问题描述 投票:1回答:2

我正在用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));

非常感谢您

php sum factorial
2个回答
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));

0
投票

您应该考虑使用bcmath库进行精确的数学运算。尽管这里不是这种情况,但仍建议使用。

bcmath
© www.soinside.com 2019 - 2024. All rights reserved.