Java 意外的十进制结果

Java 意外的十进制结果,java,floating-point,decimal,Java,Floating Point,Decimal,我运行了以下代码,但没有预料到结果 public class SampleDemo { public static void main(String args[]) { System.out.println(10.00 - 9.10); } } 我得到的o/p为0.900000000000004 为什么会这样?这是因为十进制值不能用float或double精确表示 一个建议:在需要准确答案的地方避免浮动和双精度。改用BigDecimal、int或long

我运行了以下代码,但没有预料到结果

public class SampleDemo {
    public static void main(String args[]) {  
        System.out.println(10.00 - 9.10);
    }
}
我得到的o/p为0.900000000000004


为什么会这样?

这是因为十进制值不能用float或double精确表示

一个建议:在需要准确答案的地方避免浮动和双精度。改用BigDecimal、int或long


使用int:

public class SampleDemo {
    public static void main(String args[]) {  
        System.out.println(10 - 9);
    }
}

// Output : 1
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:

public class SampleDemo {
    public static void main(String args[]) {  
        System.out.println(10 - 9);
    }
}

// Output : 1
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

阅读侧边的所有相关问题--->:)只是想指出,如果你需要这种精确性,那就去吧,它可以让你更好地控制精确性、规模、取整政治等等。是的,@Anthony+1我在我的答案中添加了它。:)