//浮点型数值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时,有可能出现奇怪的数字.