2017年1月8日 星期日

JAVA-四捨五入處理

想必各位一定遇到很多有關計算的問題
這篇提供一些有關四捨五入的計算方式

記住 : 整數的型別是無法得到小數點後的數

首先 , 如何產生包含小數參數
我們先以相同的型別計算
int a = 70;
int b = 3;
System.out.println("int 兩數相除 : " + a/b);

long d = 70;
long e = 3;
System.out.println("long 兩數相除 : " + d/e);

float g = 70;
float h = 3;
System.out.println("float 兩數相除 : " + g/h);

System.out.println("int/float 兩數相除 : " + a/h);
System.out.println("float/int 兩數相除 : " + g/b);

-------------------------------------------------

int 兩數相除 : 23
long 兩數相除 : 23
float 兩數相除 : 23.333334
int/float 兩數相除 : 23.333334
float/int 兩數相除 : 23.333334

因為整數型別無法取到小數點後的值
所以我們要先做轉型才有辦法取到小數點後的數值
int a = 70;
int b = 3;
System.out.println("int 兩數相除後轉 float : " + (float)a/b);

------------------------------------------------------------

int 兩數相除後轉 float : 23.333334

最後 , 既然取得到帶有小數的參數了
我們要如何轉成特訂位數和四捨五入 ?
int a = 70;
int b = 3;
// 官方網站 : https://docs.oracle.com/javase/7/docs/api/java/math/RoundingMode.html
double j = new BigDecimal((double)a/b).setScale(2, RoundingMode.HALF_UP).doubleValue();
System.out.println("BigDecimal 四捨五入後取小數第二位 : " + j);

DecimalFormat decimalFormat =new DecimalFormat("#.00");
System.out.println("將參數直接轉換格式 : " + decimalFormat.format(j));

---------------------------------------------------------------------

BigDecimal 四捨五入後取小數第二位 : 23.33 // 可轉二捨五入
將參數直接轉換格式 : 23.33
上方的 BitDecimal 官方文件 : 連結
以上有很多的方法可用

參考資料 : java提高篇(三)-----java的四捨五入
歡迎轉載 , 請註明出處 .

沒有留言:

張貼留言