意外的十进制结果 [英] Unexpected decimal result

查看:145
本文介绍了意外的十进制结果的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我运行下面的代码,但没有想到结果。

  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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆