本文介绍了意外的十进制结果的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我运行下面的代码,但没有想到结果。
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 : 1Using 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
更多推荐
意外的十进制结果
发布评论