gpt4 book ai didi

C# Math.Round 错误?

转载 作者:行者123 更新时间:2023-11-30 19:31:36 24 4
gpt4 key购买 nike

好吧,我意识到现在是星期天的早些时候,所以我希望我只是遗漏了一些明显的东西:

我有这个功能:

private decimal CashConversion(decimal amount, decimal ratio)
{
if (ratio == 1) return amount;

decimal convertedAmount = amount / ratio;
return Math.Round(convertedAmount, 2);
}

当我这样调用它时:

decimal tax = CashConversion(96.53, 15);

“税”变量等于 6.43。然而,96.53/15 是 6.435333333333333。将其四舍五入到 2 位应返回 6.44。我在这里遗漏了什么吗?

最佳答案

检查 documentation for Math.Round : 由于 2 是偶数,并且秒后的下一位数字是 5,因此根据 IEEE 标准 754 第 4 节,该值被向下舍入。这称为银行家舍入

这不是错误,而是预期的行为。不过,也许不是所期待的那样。

如果你想要“数学上正确”的行为,你可以调用 Decimal.Round(Decimal, Int32, MidpointRounding)过载,如:

Math.Round(convertedAmount, 2, MidpointRounding.AwayFromZero);

关于C# Math.Round 错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6890085/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com