java - 乘以两位小数 - Java

标签 java

将 double 类型的数字相乘,输出结果需要保留两位小数

double creditCardPercentage = 0.03;
String renewalEventAmount = "2144.60";
double expectedRenewalAmount = 0;
expectedRenewalAmount = Double.parseDouble(renewalEventAmount) * creditCardPercentage;

expectedRenewalAmount 的输出是 64.338,那么我们如何将上面的输出格式化为两位小数

预期:

64.33

最佳答案

您应该使用 BigDecimal 类,因为它具有浮点精度的内置处理:

BigDecimal creditCardPercentage = new BigDecimal(0.03);
String renewalEventAmountString = "2144.60";
BigDecimal renewalEventAmount = new BigDecimal(renewalEventAmountString);
BigDecimal expectedRenewalAmount = renewalEventAmount.multiply(creditCardPercentage);
expectedRenewalAmount = expectedRenewalAmount.setScale(2, BigDecimal.ROUND_HALF_DOWN);

System.out.println(expectedRenewalAmount); // prints 64.33

使用 BigDecimal 处理格式的优点之一是,它允许您将代码与业务逻辑分开,即从输出的 View 代码中四舍五入到小数点后两位结果给用户。

关于java - 乘以两位小数 - Java,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29406565/

相关文章:

java - 从 Control 数组按类型获取 UI 元素?

java - Android - phonegap cordova.jar 的源代码

java - Swing 和 WebEditorKit - 在 SwingFrame 中显示我的浏览器

java - 奇怪的连接被拒绝: connect error in Java client

java - MongoDB EC2 基准配置

java - 具有子状态的 Spring 状态机生成器抛出错误 - "Initial state not set"

java - 如何使用 weblogic.deployer 部署 jar 文件?

java - SAXTransform 链中的第二个 XSLT 似乎没有执行任何操作

java - 从命令行编译一个 eclipse GWT 项目,没有 eclipse : compile error

java - file.exists() 当文件存在时返回 false