PHP小数点和是可能的

PHP小数点和是可能的,php,floating-point,sum,decimal,Php,Floating Point,Sum,Decimal,我试图用php对其进行总结: .1, .1, .1, .1, .1, .1, .1, .1, .1, .1 它应该给我结果“1”,但它给了我答案“0.9999” 这是我的密码 您的代码也可以工作,您有10个输入,因此0.1*10=1。但对字符串进行数学运算是个坏主意。它更好地使用数字和格式化输出上的数字 class Num { public static function fsum(...$num) { $s = 0; foreach ($nu

我试图用php对其进行总结:

.1, .1, .1, .1, .1, .1, .1, .1, .1, .1
它应该给我结果“1”,但它给了我答案“0.9999”

这是我的密码


您的代码也可以工作,您有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));

您的代码也可以工作,您有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));
你应该考虑使用库来进行精确的数学运算。虽然这里的情况并非如此,但我们仍然建议这样做

class Num
{
    public static function fsum(...$num)
    {
        $s = 0;
        foreach ($num as $n) {
            $s = bcadd($s, $n, 2); // precision of 2, set to your own needs
        }
        return $s;
    }
}

var_dump(Num::fsum(.1, .1, .1, .1, .1, .1, .1, .1, .1, .1));
你应该考虑使用库来进行精确的数学运算。虽然这里的情况并非如此,但我们仍然建议这样做

class Num
{
    public static function fsum(...$num)
    {
        $s = 0;
        foreach ($num as $n) {
            $s = bcadd($s, $n, 2); // precision of 2, set to your own needs
        }
        return $s;
    }
}

var_dump(Num::fsum(.1, .1, .1, .1, .1, .1, .1, .1, .1, .1));

否它返回1.000000,这不是真的结果应该是1.00@daremachine是正确的。@Andrei看这里看第一个例子python和php有什么共同点?它与php无关,而是他下面的例子。他给出答案所依据的库没有对任意操作使用全精度数学。不,它返回1.000000,这是不正确的。结果应该是1.00@daremachine是正确的。@Andrei看这里看第一个例子python和php有什么共同点?它与php无关,而是他下面的例子。他给出答案所依据的库没有对任意操作使用全精度数学。为什么是0.999?10 * 0.1 = 1@help-看这里我的问题是什么浮点和,所以它应该是100%准确的结果,而不是0.999的整数?10 * 0.1 = 1@help-info.de看看这里我的问题是什么浮点和,所以它应该是100%准确的结果,而不是这一轮仍然并没有产生写结果。我的问题是关于准确的结果,就像在python中一样。看看这里,看看第一个示例您提供的示例并没有考虑浮点精度。它不应该用于任意精度的数学。您需要。这仍然没有生成写入结果。我的问题是关于python中的精确结果。请看这里,请看第一个示例。您提供的示例没有考虑浮点精度。它不应该用于任意精度的数学。你需要。