As it currently stands, this question is not a good fit for our Q&A format. We expect answers to be supported by facts, references, or expertise, but this question will likely solicit debate, arguments, polling, or extended discussion. If you feel that this question can be improved and possibly reopened, visit the help center提供指导。




已关闭8年。




在msdn文档中查找Convert.ToInt32(),它指出:



http://msdn.microsoft.com/en-us/library/ffdk7eyz.aspx

这是为什么?

当然,四舍五入到最接近的整数会更合逻辑,不是吗?如果是这样,则4.5将变为5,而5.5将变为6,这似乎更加直观。

最佳答案

Wikipedia条目Rounding的“历史记录”部分对“四舍五入”在计算中的作用作了一些陈述。有趣的是,“银行家四舍五入”似乎没有证据表明它在任何意义上都是官方的,因此只能用ed语来形容。

如果您订阅该舍入机制,则只有“更合乎逻辑”。银行家四舍五入(在这种情况下,这是默认设置)也是完全合乎逻辑的。

想象一下,如果银行将每个小数部分的金额四舍五入到最接近的一分钱,那么每天处理的数以百万计的交易将使它们的收入减少很多(对于愤世嫉俗的人来说,很多)。好的,所以这个例子很愤世嫉俗。

趋近于最接近的偶数(或奇数,但历史记录另作选择)意味着并非每个舍入分辨率都会提高,现在可以降低。当您将其置于平均值定律时,当考虑由负责支付多半便士的时,它成为使用的公平解决方案。

至于为什么选择此框架,此问题试图解决它:

Why does .NET use banker's rounding as default?

当然,这一切都可以追溯到财务日,并且它是否适用于整数可能会受到质疑,但是为什么要打扰呢?接受它,如果需要可以覆盖它,只是了解它是如何工作的。

对于想知道如何更改默认舍入的人:

如果要为Convert.ToInt32提供非整数,则实际上首先需要执行类似Convert.ToDouble Math.Round with the overload to change the rounding logic的操作。

关于c# - 为什么Convert.ToInt32()舍入到最接近的偶数,而不是最接近的整数? ,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/11431793/

10-10 22:01