java – Float和BigDecimal的精度差异

前端之家收集整理的这篇文章主要介绍了java – Float和BigDecimal的精度差异前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

public static void main(String[] args) {
    // TODO Auto-generated method stub
    BigDecimal foo,foo1;
    foo=BigDecimal.valueOf(3.1);
    foo1=BigDecimal.valueOf(3.1f);

    System.out.println(foo);
    System.out.println(foo1);

}

结果:
3.1
3.0999999046325684
为什么他们的结果不同?我使用的是JDK1.7.0_03

最佳答案
3.1定义一个double而3.1f定义一个float.你看到的是float表示该值的问题(float使用“仅”32位和双64位).

如果要使用BigDecimal精确定义3.1,请使用String构造函数

BigDecimal foo = new BigDecimal("3.1");
System.out.println(foo);

输出

3.1

猜你在找的Java相关文章