结果不正确,总和为2个十进制舍入数字

时间:2013-07-16 13:03:03

标签: java math

我的应用需要将数字四舍五入到小数点后两位。 我有一个包含4个字段的文档:xyzAmount。而且:

Amount = x*y/z;

这是我的问题:

TotalAmount: x(100)*y(41.30)/z(1000) = 4.13.

SubAmount1: x(70)*y(41.30)/z(1000) = 2.89 [2.891 before rounding]

SubAmount2: x(10)*y(41.30)/z(1000) = 0.41 [0.413 before rounding]

SubAmount3: x(10)*y(41.30)/z(1000) = 0.41 [0.413 before rounding]

SubAmount4: x(10)*y(41.30)/z(1000) = 0.41 [0.413 before rounding]

现在所有'SubAmounts'的总和不等于'TotalAmount'。由于四舍五入而导致0.01差异。

如何解决此问题?请分享您的建议。

注意:保存完整的小数位'2.891'对我来说不起作用,因为我们有现有数据,而其他一些计算则取决于'金额'的舍入值。

1 个答案:

答案 0 :(得分:0)

您可以将完整(非圆形)SubAmounts存储在变量中(例如,S1将包含2.891,S2将为0.413,S3将为0.413,S4将为0.413)。 要填充您的文档,只需将SubAmount1作为舍入值的S1,作为SubAmount2的舍入值S2,作为SubAmount3的舍入值S3,作为SubAmount4的舍入值S4。通过舍入总和(S1 + S2 + S3 + S4)获得TotalAmount的值。 希望它可以帮到你。