我运行以下代码,但没想到结果。
public class SampleDemo {
public static void main(String args[]) {
System.out.println(10.00 - 9.10);
}
}
我得到的 o/p 为 0.90000000000000004
为什么会这样?
这是因为十进制值不能用浮点数或双精度精确表示。
一个建议:在需要确切答案的地方避免使用浮点数和双精度。改用 BigDecimal、int 或 long
使用 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