我有一个项目,我必须在其中创建一个包含多个选项的购物车,例如向购物车添加一定数量的商品。除非用户提示购物车的总数,否则一切正常。它将输出一个疯狂的数字,例如$ 15.9614.9500000000000000013.0。
这是用于打印总数的代码。所有的价值都是双倍的。有什么帮助吗?
System.out.println("Your total comes to $" +
(dynamicRope * dynamicRopeCost) +
(staticRope * staticRopeCost) +
(webbing * webbingCost));
答案 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)));