Double轉(zhuǎn)換大數(shù)字出現(xiàn)精度丟失或者錯誤,如18位或以上的數(shù)字超過100000000000000000打印出來就會出現(xiàn)錯誤,用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
提交
取消