java - 在乘法中使用 double (java)

标签 java

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

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

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

最佳答案

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

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)));

关于java - 在乘法中使用 double (java),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29157314/

相关文章:

java - 如何将具有所有依赖项的 Netbeans maven 项目移动到其他计算机

java - 依赖注入(inject)的真正用例是什么?

java - Spring Security 不允许加载 CSS 或 JS 资源

java - URLConnection 在 java 中读入 null

java - 静态内部类和类的静态成员共享同名?

java - Java 中垃圾收集器的工作

java - 在声明之前分配一个静态变量

java - 如何禁用 Jackson 从 epoch millis 反序列化 Instant?

java - tess4J 应用程序的 JUnit 测试

java - 当我 setBackground(); 时,Slick2d java 游戏崩溃;