我有一个愚蠢的问题:
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
使用BigDecmial的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
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句