Math.Round() 似乎不一致

发布于 2024-12-13 08:50:05 字数 441 浏览 3 评论 0原文

可能的重复:
.Net 圆形错误
在 C# 中:Math.Round(2.5) 结果是 2(而不是 3)!你在开玩笑吧?

代码:

var d1 = Math.Round(187.5); // 188
var d2 = Math.Round(62.5); // 62

为什么会这样呢?

Possible Duplicate:
.Net Round Bug
In C#: Math.Round(2.5) result is 2 (instead of 3)! Are you kidding me?

Code:

var d1 = Math.Round(187.5); // 188
var d2 = Math.Round(62.5); // 62

Why is it so?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

面犯桃花 2024-12-20 08:50:05

默认情况下,Math.Round 使用一种名为银行家舍入< /a>,当输入介于两个整数之间时,四舍五入到最接近的偶数整数。

请参阅 为什么 .NET 使用银行家舍入作为默认值? 了解对这个设计决策的理解。

如果您不喜欢这种行为,可以随时使用此重载Math.Round 的 >,它允许您指定 MidPointRoundingMode(ToEven、AwayFromZero)。

By default, Math.Round uses a form of rounding called Banker's Rounding, which rounds to the nearest even integer when the input is halfway between two integers.

See Why does .NET use banker's rounding as default? for an understanding of this design decision.

If you don't like this behaviour, you can always use this overload of Math.Round, which lets you specify the MidPointRoundingMode (ToEven, AwayFromZero).

挽心 2024-12-20 08:50:05

您可以通过调用该方法的此重载来更改此行为 - http:// msdn.microsoft.com/en-us/library/ms131274.aspx

You can change this behaviour with an call to this overload of the method - http://msdn.microsoft.com/en-us/library/ms131274.aspx

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文