5 java floating-point 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);
}
Run Code Online (Sandbox Code Playgroud)
结果:
3.1
3.0999999046325684
为什么他们的结果不同?我使用的是JDK1.7.0_03
3.1定义了一个doublewhile3.1f定义了一个float。您看到的是float表示该值的问题(浮点数“仅”使用 32 位和双 64 位)。
如果你想定义一个3.1完全BigDecimal使用的String构造函数:
BigDecimal foo = new BigDecimal("3.1");
System.out.println(foo);
Run Code Online (Sandbox Code Playgroud)
输出:
3.1
Run Code Online (Sandbox Code Playgroud)