Cur*_*urt 20 c# decimal int32 rounding
查看Convert.ToInt32()它的msdn文档说明:
如果值在两个整数之间,则返回偶数; 也就是说,4.5转换为4,5.5转换为6.
http://msdn.microsoft.com/en-us/library/ffdk7eyz.aspx
为什么是这样?
当然,舍入到最接近的整数更合乎逻辑,不是吗?如果是这样,4.5将变为5,而5.5将变为6,这似乎更直观.
Ada*_*rth 13
Rounding维基百科条目的历史部分对计算中"round to even"的作用有一些陈述.有趣的是,看起来"Bankers Rounding"几乎没有证据表明它在任何意义上都是官方的,因此只能用作俚语术语.
如果您订阅该舍入机制,那只是"更合乎逻辑".四舍五入(在这种情况下是默认值)也是完全符合逻辑的.
想象一下,如果银行的每一小部分金额都汇总到最接近的便士,那么每天处理的数百万交易将会减少很多(对于愤世嫉俗的人而言)损失很多钱.好的,所以这个例子是愤世嫉俗的.
走向最接近的偶数(或奇数,但历史选择否则)意味着并非每个舍入分辨率都会上升,有些可能会下降.当你把它置于平均律时,在考虑谁负责支付额外的半便士时,它就成为一个公平的解决方案.
至于为什么选择这个框架,这个问题试图解决它:
当然,这一切都可以追溯到金融时代,它对整数的适用性可能会受到质疑,但为什么还要费心呢?接受它,如果你想要覆盖它,只需了解它是如何工作的.
如果你提供一个非整数,Convert.ToInt32你首先需要做一些事情Convert.ToDouble,然后Math.Round用重载来改变舍入逻辑.