日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

java numberformat_NumberFormat(数字格式化类)

發布時間:2023/12/10 编程问答 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java numberformat_NumberFormat(数字格式化类) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

前言

在工作當中,可能經常會遇到比如數據保留兩位小數顯示,去除后面多余0,按指定格式輸出數據這種需求,有時隔得時間久了也難免會忘記,所以就稍作總結方便今后查看,同時最后提供一個工具類方便今后使用。

NumberFormat

NumberFormat 是所有數值格式的抽象基類。此類提供格式化和解析數值的接口。NumberFormat 還提供了一些方法來確定哪些語言環境具有數值格式,以及它們的名稱是什么。

NumberFormat 可用于格式化和解析任何語言環境的數值。使代碼能夠完全獨立于小數點、千位分隔符甚至所用特定小數位數的語言環境約定,并與數值格式是否為偶小數無關。

數值格式化

getInstance()、getNumberInstance()。返回當前默認語言環境的通用數值格式。

getInstance(Locale)、getNumberInstance(Locale)。返回指定語言環境的通用數值格式。

NumberFormat.setMinimumIntegerDigits(int)。設置數的整數部分所允許的最小位數。

NumberFormat.setMaximumIntegerDigits(int)。設置數的整數部分所允許的最大位數。

NumberFormat.setMinimumFractionDigits(int)。設置最少小數點位數,不足的位數以0補位,超出的話按實際位數輸出。

NumberFormat.setMaximumFractionDigits(int)。設置最多保留小數位數,不足不補0。

import java.text.NumberFormat;

import java.util.Locale;

public class HelloWorld {

public static void main(String[] args) {

numberFormat();

}

private static void numberFormat() {

double d = 12345.676688000;

NumberFormat nf = NumberFormat.getNumberInstance();

System.out.println(nf.format(d));//12,345.677 默認只保留到小數點后三位

nf.setMinimumIntegerDigits(2);

System.out.println(nf.format(d));//12,345.677 整數部分大于2位按默認最大小數位數3位輸出

d = 1234.0;

nf.setMaximumIntegerDigits(3);

System.out.println(nf.format(d));//234

nf = NumberFormat.getInstance();

d = 12345.6766;

nf.setMinimumFractionDigits(1);

System.out.println(nf.format(d));//12,345.677 小數部分大于1位,按默認最大小數位數3位輸出

nf.setMinimumFractionDigits(5);

System.out.println(nf.format(d));//12,345.67660 不夠位數補0

nf.setMaximumFractionDigits(1);

System.out.println(nf.format(d));//12,345.7

nf = NumberFormat.getNumberInstance(Locale.US);

d = 12345.6789;

System.out.println(nf.format(d));//12,345.679

nf = NumberFormat.getNumberInstance(Locale.FRANCE);

System.out.println(nf.format(d));//12 345,679

}

}

DecimalFormat

“0”——表示一位數值,如沒有,顯示0。如“0000.0000”,整數位或小數位>4,按實際輸出,<4整數位前面補0小數位后面補0,湊足4位。

“#”——表示任意位數的整數。如沒有,則不顯示。在小數點位使用,只表示一位小數,超出部分四舍五入。如:

“#”:無小數,小數部分四舍五入。

“.#”:整數部分不變,一位小數,四舍五入。

“.##”:整數部分不變,二位小數,四舍五入。

“.”——表示小數點。

“,”——與模式“0”一起使用,表示逗號。

private static void decimalFormat() {

double d1 = 123456.36987, d2 = 12.3698;

DecimalFormat nf = new DecimalFormat("0000.000");

System.out.println("d1=" + nf.format(d1) + " d2=" + nf.format(d2));//d1=123456.370 d2=0012.370

nf = new DecimalFormat("#");

System.out.println("d1=" + nf.format(d1));//d1=123456

nf = new DecimalFormat(".####");

System.out.println("d1=" + nf.format(d1));//d1=123456.3699

nf = new DecimalFormat("0000,0000.00000");//注意“,”不能放在小數部分

System.out.println("d1=" + nf.format(d1));//d1=0012,3456.36987

}

貨幣格式化

getCurrencyInstance()。靜態方法,建立一個NumberFormat類的對象并返回引用,該引用指定貨幣格式為系統預設的貨幣格式。

getCurrencyInstance(Locale) 。靜態方法,建立一個NumberFormat類的對象,并返回引用,該引用的貨幣格式由Locale指定。Locale類在java.util包中。

import java.text.NumberFormat;

import java.util.Locale;

public class HelloWorld {

public static void main(String[] args) {

currencyFormat();

}

private static void currencyFormat() {

//按系統預設的貨幣格式輸出,這里是人民幣

NumberFormat nf = NumberFormat.getCurrencyInstance();

System.out.println(nf.format(123.456));//¥123.46

//按指定的貨幣格式輸出,這里是美元

//Locale locale = Locale.US;

nf = NumberFormat.getCurrencyInstance(Locale.US);

System.out.println(nf.format(123.456));//$123.46

}

}

百分比格式化

getPercentInstance()。靜態方法,創建一個NumberFormat類的對象并返回其引用。該對象指定百分比格式為系統預設格式。

getPercentInstance(Locale)。靜態方法,創建一個NumberFormat類的對象并返回引用。該對象的百分比格式由Locale來指定。

private static void percentFormat() {

//按系統預設百分比格式輸出

double d = 123.456;

NumberFormat nf = NumberFormat.getPercentInstance();

System.out.println(nf.format(d));//12,346%

//按指定百分比格式輸出,這里是法國格式

nf = NumberFormat.getPercentInstance(Locale.FRANCE);

System.out.println(nf.format(d));//12 346 %

}

工具類

import java.text.DecimalFormat;

import java.text.NumberFormat;

public class NumberDealUtil {

/**

* 移除數字前面和后面冗余的0,只保留3位小數

*

* @param isFormat 是否需要千位分隔符(,)這種格式輸出

* @param num

* @return

*/

public static String trim0(boolean isFormat, double num) {

NumberFormat nf = NumberFormat.getInstance();

if (!isFormat) {

//設置輸出格式是否使用“,”分組,默認是使用的

nf.setGroupingUsed(false);

}

String result = nf.format(num);

// return isFormat ? result : result.replace(",", ""); //用上面代碼替換去除分隔符操作

return result;

}

/**

* 移除數字前面和后面冗余的0

*

* @param isFormat 是否需要千位分隔符(,)這種格式輸出

* @param num

* @param fractionDigit 要保留的小數位數

* @return

*/

public static String trim0(boolean isFormat, double num, int fractionDigit) {

NumberFormat nf = NumberFormat.getInstance();

nf.setMaximumFractionDigits(fractionDigit);

//setMaximumFractionDigits不會保留小數點和后面多余的0,不需下面正則去除

// if (result.contains(".") && result.endsWith("0")) {

// result = result.replaceAll("0+?$", "");//去掉多余的0

// result = result.replaceAll("[.]$", "");//如最后一位是.則去掉

// }

if (!isFormat) {

//設置輸出格式是否使用“,”分組,默認是使用的

nf.setGroupingUsed(false);

}

String result = nf.format(num);

// return isFormat ? result : result.replace(",", "");

return result;

}

/**

* 指定位數輸出,不足補0

* 整數部分如果位數大于需要的位數按實際位數輸出

* 小數部分如果大于需要的位數四舍五入

*

* @param num

* @param integerDigit 整數部分位數

* @param fractionDigit 小數部分位數

* @return

*/

public static String add0Format(double num, int integerDigit, int fractionDigit) {

StringBuilder rule = new StringBuilder();

if (integerDigit <= 0) {

rule.append("#");

} else {

for (int i = 0; i < integerDigit; i++) {

rule.append("0");

}

}

if (fractionDigit > 0) {

rule.append(".");

for (int i = 0; i < fractionDigit; i++) {

rule.append("0");

}

}

DecimalFormat df = new DecimalFormat(rule.toString());

return df.format(num);

}

/**

* 保留幾位小數,不足不補0,小數部分冗余的0也不顯示

*

* @param num

* @param fractionDigit 要保留小數的位數

* @return

*/

public static String fractionDigitFormat(double num, int fractionDigit) {

/*方法一*/

// StringBuilder rule = new StringBuilder("#");

// if (fractionDigit > 0) {

// rule.append(".");

// for (int i = 0; i < fractionDigit; i++) {

// rule.append("#");

// }

// }

// DecimalFormat df = new DecimalFormat(rule.toString());

// return df.format(num);

/*方法二*/

NumberFormat nf = NumberFormat.getInstance();

nf.setMaximumFractionDigits(fractionDigit);

//設置輸出格式是否使用“,”分組,這里不使用

nf.setGroupingUsed(false);

return nf.format(num);

}

}

總結

以上是生活随笔為你收集整理的java numberformat_NumberFormat(数字格式化类)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。