我运行下面的代码,但没想到结果..意外小数结果
public class SampleDemo {
public static void main(String args[]) {
System.out.println(10.00 - 9.10);
}
}
我得到O/P为0.9000000000000004
为什么会这样呢?
我运行下面的代码,但没想到结果..意外小数结果
public class SampleDemo {
public static void main(String args[]) {
System.out.println(10.00 - 9.10);
}
}
我得到O/P为0.9000000000000004
为什么会这样呢?
这是因为十进制值不能完全由float或double表示。
一个建议:避免浮动和双精度需要确切的答案。使用的BigDecimal,int或长,而不是
使用INT:
public class SampleDemo {
public static void main(String args[]) {
System.out.println(10 - 9);
}
}
// Output : 1
使用的BigDecimal:
import java.math.BigDecimal;
public class SampleDemo {
public static void main(String args[]) {
System.out.println(new BigDecimal("10.00").subtract(new BigDecimal("9.10")));
}
}
// Output : 0.90
只需指出,如果您需要这种精度,请参阅[BigDecimal](http://download.oracle.com/javase/6/docs/api/java/math/BigDecimal.html) ,它可以让你更精确地控制精确度,规模,四舍五入政治等。 – 2011-05-20 17:18:33
是的,@Anthony +1我将它添加到我的答案中。 :) – 2011-05-20 17:21:00
阅读侧面有所有这些相关的问题 - - > http://stackoverflow.com/questions/5076710/what-is-float -in-java – 2011-05-20 17:17:38
[欢迎使用浮点运算。](http://programmers.stackexchange.com/questions/62948/what-can-be-done-to-programming-languages-to-avoid-floating-point-陷阱):) – 2011-05-20 17:18:56