gpt4 book ai didi

c# - 在 C# 中舍入为偶数

转载 作者:可可西里 更新时间:2023-11-01 09:17:28 27 4
gpt4 key购买 nike

我没有看到 Math.Round 的预期结果。

return Math.Round(99.96535789, 2, MidpointRounding.ToEven); // returning 99.97

据我了解 MidpointRounding.ToEven,千分之一位置的 5 应导致输出为 99.96。不是这样吗?

我什至试过了,但它也返回了 99.97:

return Math.Round(99.96535789 * 100, MidpointRounding.ToEven)/100;

我错过了什么

谢谢!

最佳答案

您实际上并未处于中点。 MidpointRounding.ToEven 表示如果您有数字 99.965,即 99.96500000[等],那么您将得到 99.96。由于您传递给 Math.Round 的数字高于此中点,因此它正在四舍五入。

如果您希望您的数字向下舍入为 99.96,请执行以下操作:

// this will round 99.965 down to 99.96
return Math.Round(Math.Truncate(99.96535789*1000)/1000, 2, MidpointRounding.ToEven);

嘿,这里有一个方便的小函数可以为一般情况执行上述操作:

// This is meant to be cute;
// I take no responsibility for floating-point errors.
double TruncateThenRound(double value, int digits, MidpointRounding mode) {
double multiplier = Math.Pow(10.0, digits + 1);
double truncated = Math.Truncate(value * multiplier) / multiplier;
return Math.Round(truncated, digits, mode);
}

关于c# - 在 C# 中舍入为偶数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1423074/

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