首页 > 解决方案 > VB.net 舍入问题

问题描述

我正在使用下面的公式来尝试获得利率,但有时会出现一分钱的短缺

dim float as decimal = Math.ROUND((((Convert.ToDecimal(35000000.00) * Convert.ToDecimal(0.020625)) / 360) * 3), 2, MidpointRounding.AwayFromZero)

这等于 6015.62...如果我在计算器上进行数学运算,我会得到 6015.625,然后我想将其四舍五入到 6015.63...我该如何实现?

标签: vb.net

解决方案


这不是一个四舍五入的问题。您的公式返回 6015.6249999999999999999999999,而不是 6015.625。

35000000.00 * 0.020625 = 721875
721875 / 360 = 2005.208333333333
2005.208333333333 * 3 = 6015.624999999999

如果您将公式更改为

(35000000.00 * 0.020625) / (360 / 3)

然后你得到

35000000.00 * 0.020625 = 721875
360 / 3 = 120
721875 / 120 = 6015.625

即使你改变顺序,你也会得到你想要的。

35000000.00 * 0.020625 * 3 / 360

计算器有时会做一些花哨的事情。但是编译器一次只做一步,而不看之前做了什么。


推荐阅读