Math.Round() 十进制值不正确

Math.Round() Decimal Incorrect value

我已经观察并尝试了很多不同的东西 none 工作。它们提供了相同的错误值。

错误

计算增值税的代码

            **VAT = 1.2**

            var totalVat = orderLine.MixPrice - (orderLine.MixPrice / orderLine.VatPerItem);
            var priceMinusVat = orderLine.MixPrice - totalVat;

我试过的

var roundPriceMinusVat = Math.Round(Convert.ToDecimal(priceMinusVat), 2);
var roundTotalVat = Math.Round(Convert.ToDecimal(totalVat), 2);

var roundPriceMinusVat = Math.Round(Convert.ToDecimal(priceMinusVat), 3);
var roundTotalVat = Math.Round(Convert.ToDecimal(totalVat), 3);

var roundPriceMinusVat = Math.Round(Convert.ToDecimal(priceMinusVat), 3, MidpointRounding.AwayFromZero);
var roundTotalVat = Math.Round(Convert.ToDecimal(totalVat), 3, MidpointRounding.AwayFromZero);

从技术上讲我知道这是正确的,但是因为这是面向客户的,所以我知道有人会用计算器和电子邮件解决这个问题 "this is wrong it doesn't add up"。

我真的不知道该怎么办?

感谢任何帮助。

谢谢,

克莱尔

你的问题是真值是 9.99/1.2=8.325 和 9.99-(9.99/1.2)=1.665。将两者四舍五入将导致盈余 0.005+0.005=0.01。计算

先计算税金,决定向上或向下取整并取整税金,然后从价格中减去含税金。