gpt4 book ai didi

java - 双减运算结果

转载 作者:行者123 更新时间:2023-12-01 17:10:00 26 4
gpt4 key购买 nike

我有一个愚蠢的问题:

String str0 = "245.00";
String str1 = "45.00";
Double str3 = Double.parseDouble(str0) - Double.parseDouble(str1);
System.out.println(str3); =====> 200.0

为什么它不给出 200.00? (也用 Float 进行了测试)如何控制逗号后的位数?

最佳答案

这不是答案,而是进行浮点计算的一般建议。

您应该使用BigDecimal进行计算

public class BigDecimalExample {

public static void main(String args[]) throws IOException {

//floating point calculation
double amount1 = 2.15;
double amount2 = 1.10;
System.out.println("difference between 2.15 and 1.0 using double is: " + (amount1 - amount2));

//Use BigDecimal for financial calculation
BigDecimal amount3 = new BigDecimal("2.15");
BigDecimal amount4 = new BigDecimal("1.10") ;
System.out.println("difference between 2.15 and 1.0 using BigDecimal is: " + (amount3.subtract(amount4)));
}
}

输出:

使用 double 的 2.15 和 1.0 之间的差异是:1.0499999999999998

使用 BigDecial 的 2.15 和 1.0 之间的差异是:1.05

此答案改编自http://javarevisited.blogspot.in/2012/02/java-mistake-1-using-float-and-double.html

您还可以阅读一篇关于 BigDecimal 需求的非常好的文章 http://www.javaworld.com/article/2071332/the-need-for-bigdecimal.html

关于java - 双减运算结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24180290/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com