我有一个Decimal(19,5)大小的数据库列,我希望java中的BigDecimal存储值但是如果我写的话
BigDecimal(999999999999999.9999);
Run Code Online (Sandbox Code Playgroud)
该值四舍五入为1 + E15,我不希望这样,所以我怎样才能获得数字的完整精度.
我知道的一种方法是使用
BigDecimal("999999999999999.9999");
Run Code Online (Sandbox Code Playgroud)
我认为应该有更好的选择来指定精度.
你需要使用一个带有a的构造函数,String因为double在它到达BigDecimal构造函数之前,编译器已经对constant 的值进行了舍入.换句话说,编译器会看到您的999999999999999.9999常量,并将其转换为double.该double类型没有足够的精度来存储所有9,因此值被舍入到1+E15,并且这是传递给BigDecimal构造函数的值.在程序执行第一条指令之前,精度已经消失.
另一方面,当您传递一个字符串时,您BigDecimal可以解释九个序列,确保您获得所需的精确精度.
| 归档时间: |
|
| 查看次数: |
3722 次 |
| 最近记录: |