DecimalFormat類 小數點計算

2021-08-24 20:33:25 字數 3020 閱讀 4446

decimalformat是numberformat乙個具體的子類,主要是格式化十進位制數。它有各種各樣的設計用於解析和格式化數字中的數字的特性區域設定,包括整數(123)、固定點編號(123.4)、科學記數法(1.23e4)、百分比(12%)和貨幣金額(123美元)等。

常用到的幾個需求案例

1.保留兩位的百分比數;例如:99.99%

2.金額預設保留兩位;例如:199.00¥,231,199.00元

3.最多保留幾位,最少保留幾位;例如:3.141592 , 3.14, 3

4.捨入配置 等需求

上**- 幾個常用方法介紹

//輸入  5211314

// 可以無引數構造,有引數構造 引數有語法,詳見底部。參考"0.0","0.0¤","0.0%"。

decimalformat df = new decimalformat();

// 設定國家貨幣符號 引數為iso 4217標準,如果構造引數新增『¤』符號,參考--> 5211314¥

df.setcurrency(currency.getinstance("cny"));

// 設定最多保留幾位.參考--> 5211314.00

df.setmaximumfractiondigits(2);

// 設定分組大小.參考--> 5,211,314

df.setgroupingsize(3);

// 設定乘以的倍數.參考--> 521131400

df.setmultiplier(100);

// 設定正數字首,參考--> @5211314

df.setpositiveprefix("@");

// 設定正數字尾 但是替換掉 已有字元 參考--> 5211314@

df.setpositivesuffix("@");

// 設定負數字首,只對負數有效 參考-->@-1

df.setnegativeprefix("@");

// 設定負數字尾 但是替換掉 已有字元 只對負數有效 參考--> -1@

df.setnegativesuffix("@");

// 設定四捨五入的模式 詳見 roundingmode 類 寫的 非常詳細

df.setroundingmode(roundingmode.down);

// 格式化 成 想要的結果

df.format(5211314);

比較通用的方法

/**

* 獲取格式化的double數的字串

* * 直接擷取數值 不四捨五入

* * @param num 需要被格式化的數

* @param sample 具體樣式

* sample="0.00元"; 效果 : 2018.99元;

* sample="(萬元)0.00"; 效果 : (萬元)2018.99;

* sample="0.00¥"; 效果 : 2018.99¥;

* sample="¥0.00"; 效果 : ¥2018.99;

* sample="0.00%"; 效果 : 201899.00%; (自動乘以100)

* @return 格式化後的字串

*/public static string getdoubleformat(double num, string sample)

//百分比 和 金額數值 列印

system.out.println(getdoubleformat(0.99989,"0.00%"));//列印結果: 99.98%,自動乘以100

system.out.println(getdoubleformat(1,"0.00%"));//列印結果: 100.00%,自動乘以100

system.out.println(getdoubleformat(1.2577,"0.00 萬元"));//列印結果: 1.25 萬元

system.out.println(getdoubleformat(12577,"0.00 元"));//列印結果: 12577.00 元

system.out.println(getdoubleformat(12577,"¥ 0.00"));//列印結果: ¥ 12577.00

帶位分隔的格式化的double數的字串

/**

* 獲取帶位分隔格式化的double數的字串

* (帶位分隔的就比較麻煩點了)

* * 直接擷取數值 不四捨五入

* * @param num 需要被格式化的數

* @param groupingsize 需要幾位整數分隔

* @param fractiondigits 需要保留幾位小數

* @param suffix 字尾字元

* @return 格式化後的字串

*/public static string getgroupingformat(double num,int groupingsize, int fractiondigits,string suffix)

system.out.println(getgroupingformat(12577,3,2," 元"));//列印結果: 12,577.00 元

system.out.println(getgroupingformat(12577.998,3,2," 元"));//列印結果: 12,577.99 元

system.out.println(getgroupingformat(177.998,3,2," ¥"));//列印結果: 177.99 ¥

控制最多保留幾位,最少保留幾位

//最多保留幾位

df.setmaximumfractiondigits(6);

//最少保留幾位, 可以是0 就是 取整數

df.setminimumfractiondigits(2);

關於DecimalFormat 小數的保留位數

除法結果保留兩位小數,小數保留前導零 decimalformat df1 new decimalformat 0.0 保留1位小數,帶前導零 decimalformat df2 new decimalformat 保留1位小數,可以不帶前導零 decimalformat df3 new decima...

DecimalFormat物件關於小數點位數

比實際數字的位數多,不變。new decimalformat format 3.14 結果 3.14 new decimalformat format 3.14 結果 3.14 new decimalformat format 3.14 結果 3.14 比實際數字的位數少 整數部分不改動,小數部分,...

DecimalFormat用於格式化資料簡單使用

decimalformat用於格式化資料 具體使用為 decimalformat format new decimalformat 0.0 代表保留整數字以及小數一位的資料,小數字會保留0,即1.0格式後結果為1.0 若想小數字為0時不保留,為其他數字時保留,則可使用 即 decimalformat...