VB.net四舍五入问题

时间:2018-08-07 14:04:47

标签: 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 ...我该如何实现呢?

1 个答案:

答案 0 :(得分:2)

这不是一个四舍五入的问题。您的公式返回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

计算器有时会做一些花哨的事情。但是编译器一次只执行一个步骤,而不会查看以前所做的事情。