意外的十进制结果 [英] Unexpected decimal result
本文介绍了意外的十进制结果的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我运行下面的代码,但没有想到结果。
public class SampleDemo {
public static void main(String args []){
System.out.println(10.00 - 9.10);
$ / code $ / pre
$ b $ p我得到o / p为0.9000000000000004 是因为十进制值不能完全由浮点数或双精度表示。
一个建议:避免float和double在需要精确答案的地方。使用BigDecimal,int或long来代替
使用int:
public class SampleDemo {
public static void main(String args []){
System.out.println (10 - 9);
$ b $ //输出: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)));
}
}
//输出:0.90
I run the following code, but did not expect that result..
public class SampleDemo {
public static void main(String args[]) {
System.out.println(10.00 - 9.10);
}
}
I am getting o/p as 0.9000000000000004
Why is it so?
解决方案 This is because decimal values can’t be represented exactly by float or double.
One suggestion : Avoid float and double where exact answers are required. Use BigDecimal, int, or long instead
Using int :
public class SampleDemo {
public static void main(String args[]) {
System.out.println(10 - 9);
}
}
// Output : 1
Using 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
这篇关于意外的十进制结果的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文