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
添加回答
舉報
0/150
提交
取消