已关闭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/