在乘法中使用双精度(java)

时间:2015-03-20 00:19:08

标签: java

我有一个项目,我必须在其中创建一个包含多个选项的购物车,例如向购物车添加一定数量的商品。除非用户提示购物车的总数,否则一切正常。它将输出一个疯狂的数字,例如$ 15.9614.9500000000000000013.0。

这是用于打印总数的代码。所有的价值都是双倍的。有什么帮助吗?

System.out.println("Your total comes to $" + 
                   (dynamicRope * dynamicRopeCost) + 
                   (staticRope * staticRopeCost) + 
                   (webbing * webbingCost));

1 个答案:

答案 0 :(得分:1)

由于您正在处理购物车中的值并且double只是精确到一定程度,我建议您使用BigDecimal代替,因为它们提供了一个数字的精确表示。双打的不精确是导致你的控制台输出不正确的原因。

import java.math.BigDecimal;

BigDecimal dynamicRope = new BigDecimal("4"); // example value of 4
BigDecimal dynamicRopeCost = new BigDecimal("5.50"); // example value of 5.50

// Initialize the other variables as BigDecimal's here

System.out.println("Your total comes to $" +
                    dynamicRope.multiply(dynamicRopeCost)
                    .add(staticRope.multiply(staticRopeCost))
                    .add(webbing.multiply(webbingCost)));