为了账号安全,请及时绑定邮箱和手机立即绑定

Java中Double转换大数字出现精度丢失或者错误

Java中Double转换大数字出现精度丢失或者错误

隔江千里 2018-08-10 16:34:54
Double转换大数字出现精度丢失或者错误,如18位或以上的数字超过100000000000000000打印出来就会出现错误,用BigDecimal或者BigInteger能解决问题,Double的最大值也远远超过这个了呀,想知道为啥Double类型为什么会这种情况?    NumberFormat nf = NumberFormat.getInstance();    nf.setGroupingUsed(false);     System.out.println(nf.format(Double.valueOf("100000000000000000")));//100000000000000000     System.out.println(nf.format(Double.valueOf("100000000000000001")));//100000000000000000     System.out.println(nf.format(Double.parseDouble("100000000000000216")));//100000000000000224     System.out.println(new BigDecimal("100000000000000216"));//100000000000000216
查看完整描述

2 回答

?
反对 回复 2018-08-12
  • 2 回答
  • 0 关注
  • 1217 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信