可有人请解释为什么int (0.4 * 10.0)
是4
又int ((2.4 - 2.0) * 10.0)
是3
?
然后还请解释如何获得4
.即我真的必须这样做int (System.Math.Round((2.4 - 2.0) * 10.0))
吗?
对于应该如此简单的事情来说,这太丑了.
2.4 - 2.0的双重表示是0.399999999999.将数字转换为int时,小数部分将被截断,因此3.999999999将截断为3.
实际上,在.Net中有一种decimal
数据类型可以帮助您解决这个问题,如果您的数字可以精确地表示为小数部分.
2.4m - 2.0m == 0.4m 2.4 - 2.0 != 0.4