看下面的一段程式碼的運作結果:
public class TestDouble { public static void main(String[] args) { double d =538.8; System.out.println(d*100); }
輸出結果很意外的不是53880 而是53879.99999999999的結果
538.8*10000 用100*100替換。
解決方法二:
public class TestDouble { public static void main(String[] args) { double d =538.8; BigDecimal a1 = new BigDecimal(Double.toString(d)); BigDecimal b1 = new BigDecimal(Double.toString(100)); BigDecimal result = a1.multiply(b1);// 相乘结果 System.out.println(result); BigDecimal one = new BigDecimal("1"); double a = result.divide(one,2,BigDecimal.ROUND_HALF_UP).doubleValue();//保留1位数 System.out.println(a); } }
以上這篇淺談Java double 相乘的結果偏差小問題就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持PHP中文網。
更多淺談Java double 相乘的結果偏差小問題相關文章請關注PHP中文網!