1. 程式人生 > >Java有關浮點數精度——指定精確小數位

Java有關浮點數精度——指定精確小數位

一般有4種方法,下面進行簡單總結。

1.BigDecimal.setScale(int newScale,RoundingMode roundingMode)

(1)語法

引數newScale:保留的小數位數

roundingMode:保留模式,包括

BigDecimal.ROUND_DOWN :直接刪除

BigDecimal.ROUND_UP :進位

BigDecimal.ROUND_HALF_UP:四捨五入

BigDecimal.ROUND_HALF_DOWN:若捨棄部分>.5,則作ROUND_UP;  否則,作ROUND_DOWN

更詳盡的可參考此博:https://blog.csdn.net/alanzyy/article/details/8465098

(2)程式碼

BigDecimal a = new BigDecimal("3.14159265358979323").setScale(2,BigDecimal.ROUND_DOWN);
        System.out.println(a);//輸出3.14
        BigDecimal b = new BigDecimal("3.14159265358979323").setScale(2,BigDecimal.ROUND_UP);
        System.out.println(b);//輸出3.15
        BigDecimal c = new
BigDecimal("3.14159265358979323").setScale(3,BigDecimal.ROUND_HALF_UP); System.out.println(c);//輸出3.142 BigDecimal d = new BigDecimal("3.1415").setScale(3,BigDecimal.ROUND_HALF_DOWN); System.out.println(d);//輸出3.141
View Code

2.String.format()

double num = 3.14159265358979323;
System.out.println(String.format(
"%.2f", num));//輸出3.14
View Code

3.DecimalFormat.format()

 double num = 3.14159265358979323
 DecimalFormat decimalFormat = new DecimalFormat("#.00");
 System.out.println( decimalFormat.format(num));//輸出3.14

4.NumberFormat.format()

1 double num = 3.14159265358979323;
2 NumberFormat numberFormat = NumberFormat.getNumberInstance(); numberFormat.setMaximumFractionDigits(2);
3 System.out.println( numberFormat.format(num));//輸出3.14