//浮點型數值Double d = 0.0003d;//轉BigDecimal對象BigDecimal a = new BigDecimal(d);System.out.println(String.format("浮點類型數字:%.4f創建BigDecimal對象并且保留多位小數并且保留多位小數時,精度會變多,結果為%s",d,a.setScale(8, BigDecimal.ROUND_DOWN)));d = 0.0006d;a = new BigDecimal(d);System.out.println(String.format("浮點類型數字:%.4f創建BigDecimal對象并且保留多位小數時,精度會變多,結果為%s",d,a.setScale(8, BigDecimal.ROUND_DOWN)));d = 0.0007d;a = new BigDecimal(d);System.out.println(String.format("浮點類型數字:%.4f創建BigDecimal對象并且保留多位小數時,精度會變多,結果為%s",d,a.setScale(8, BigDecimal.ROUND_DOWN)));d = 0.0008d;a = new BigDecimal(d);System.out.println(String.format("浮點類型數字:%.4f創建BigDecimal對象并且保留多位小數時,精度會變多,結果為%s",d,a.setScale(8, BigDecimal.ROUND_DOWN)));d = 0.0009d;a = new BigDecimal(d);System.out.println(String.format("浮點類型數字:%.4f創建BigDecimal對象并且保留多位小數時,精度會變多,結果為%s",d,a.setScale(8, BigDecimal.ROUND_DOWN)));d = 0.001d;a = new BigDecimal(d);System.out.println(String.format("浮點類型數字:%.4f創建BigDecimal對象并且保留多位小數時,精度有時正常,結果為%s",d,a.setScale(8, BigDecimal.ROUND_DOWN)));d = 0.009d;a = new BigDecimal(d);System.out.println(String.format("浮點類型數字:%.4f創建BigDecimal對象并且保留多位小數時,精度會變多,結果為%s",d,a.setScale(8, BigDecimal.ROUND_DOWN)));d = 0.03d;a = new BigDecimal(d);System.out.println(String.format("浮點類型數字:%.4f創建BigDecimal對象并且保留多位小數時,精度會變多,結果為%s",d,a.setScale(8, BigDecimal.ROUND_DOWN)));d = 0.06d;a = new BigDecimal(d);System.out.println(String.format("浮點類型數字:%.4f創建BigDecimal對象并且保留多位小數時,精度會變多,結果為%s",d,a.setScale(8, BigDecimal.ROUND_DOWN)));d = 0.09d;a = new BigDecimal(d);System.out.println(String.format("浮點類型數字:%.4f創建BigDecimal對象并且保留多位小數時,精度會變多,結果為%s",d,a.setScale(8, BigDecimal.ROUND_DOWN)));d = 0.3d;a = new BigDecimal(d);System.out.println(String.format("浮點類型數字:%.4f創建BigDecimal對象并且保留多位小數時,精度會變多,結果為%s",d,a.setScale(8, BigDecimal.ROUND_DOWN)));d = 0.6d;a = new BigDecimal(d);System.out.println(String.format("浮點類型數字:%.4f創建BigDecimal對象并且保留多位小數時,精度會變多,結果為%s",d,a.setScale(8, BigDecimal.ROUND_DOWN)));d = 0.7d;a = new BigDecimal(d);System.out.println(String.format("浮點類型數字:%.4f創建BigDecimal對象并且保留多位小數時,精度會變多,結果為%s",d,a.setScale(8, BigDecimal.ROUND_DOWN)));d = 0.9d;a = new BigDecimal(d);System.out.println(String.format("浮點類型數字:%.4f創建BigDecimal對象并且保留多位小數時,精度會變多,結果為%s",d,a.setScale(8, BigDecimal.ROUND_DOWN)));//字符串類型數字String str = new String("0.0003");//轉BigDecimal對象a = new BigDecimal(str);System.out.println(String.format("字符串類型數字:%s創建BigDecimal對象并且保留多位小數時,精度正常,結果為%s",str,a.setScale(8, BigDecimal.ROUND_DOWN)));str = new String("0.0006");a = new BigDecimal(str);System.out.println(String.format("字符串類型數字:%s創建BigDecimal對象并且保留多位小數時,精度正常,結果為%s",str,a.setScale(8, BigDecimal.ROUND_DOWN)));str = new String("0.9");a = new BigDecimal(str);System.out.println(String.format("字符串類型數字:%s創建BigDecimal對象并且保留多位小數時,精度正常,結果為%s",str,a.setScale(8, BigDecimal.ROUND_DOWN)));
使用字符串數值,轉bigDecimal時,精度正常.
使用浮點型轉bigDecimal時,有可能出現奇怪的數字.