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

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

java numberformat_NumberFormat(数字格式化类)

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

前言

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

NumberFormat

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

NumberFormat 可用于格式化和解析任何語(yǔ)言環(huán)境的數(shù)值。使代碼能夠完全獨(dú)立于小數(shù)點(diǎn)、千位分隔符甚至所用特定小數(shù)位數(shù)的語(yǔ)言環(huán)境約定,并與數(shù)值格式是否為偶小數(shù)無(wú)關(guān)。

數(shù)值格式化

getInstance()、getNumberInstance()。返回當(dāng)前默認(rèn)語(yǔ)言環(huán)境的通用數(shù)值格式。

getInstance(Locale)、getNumberInstance(Locale)。返回指定語(yǔ)言環(huán)境的通用數(shù)值格式。

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

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

NumberFormat.setMinimumFractionDigits(int)。設(shè)置最少小數(shù)點(diǎn)位數(shù),不足的位數(shù)以0補(bǔ)位,超出的話按實(shí)際位數(shù)輸出。

NumberFormat.setMaximumFractionDigits(int)。設(shè)置最多保留小數(shù)位數(shù),不足不補(bǔ)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 默認(rèn)只保留到小數(shù)點(diǎn)后三位

nf.setMinimumIntegerDigits(2);

System.out.println(nf.format(d));//12,345.677 整數(shù)部分大于2位按默認(rèn)最大小數(shù)位數(shù)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 小數(shù)部分大于1位,按默認(rèn)最大小數(shù)位數(shù)3位輸出

nf.setMinimumFractionDigits(5);

System.out.println(nf.format(d));//12,345.67660 不夠位數(shù)補(bǔ)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”——表示一位數(shù)值,如沒有,顯示0。如“0000.0000”,整數(shù)位或小數(shù)位>4,按實(shí)際輸出,<4整數(shù)位前面補(bǔ)0小數(shù)位后面補(bǔ)0,湊足4位。

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

“#”:無(wú)小數(shù),小數(shù)部分四舍五入。

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

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

“.”——表示小數(shù)點(diǎn)。

“,”——與模式“0”一起使用,表示逗號(hào)。

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");//注意“,”不能放在小數(shù)部分

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

}

貨幣格式化

getCurrencyInstance()。靜態(tài)方法,建立一個(gè)NumberFormat類的對(duì)象并返回引用,該引用指定貨幣格式為系統(tǒng)預(yù)設(shè)的貨幣格式。

getCurrencyInstance(Locale) 。靜態(tài)方法,建立一個(gè)NumberFormat類的對(duì)象,并返回引用,該引用的貨幣格式由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() {

//按系統(tǒng)預(yù)設(shè)的貨幣格式輸出,這里是人民幣

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()。靜態(tài)方法,創(chuàng)建一個(gè)NumberFormat類的對(duì)象并返回其引用。該對(duì)象指定百分比格式為系統(tǒng)預(yù)設(shè)格式。

getPercentInstance(Locale)。靜態(tài)方法,創(chuàng)建一個(gè)NumberFormat類的對(duì)象并返回引用。該對(duì)象的百分比格式由Locale來(lái)指定。

private static void percentFormat() {

//按系統(tǒng)預(yù)設(shè)百分比格式輸出

double d = 123.456;

NumberFormat nf = NumberFormat.getPercentInstance();

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

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

nf = NumberFormat.getPercentInstance(Locale.FRANCE);

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

}

工具類

import java.text.DecimalFormat;

import java.text.NumberFormat;

public class NumberDealUtil {

/**

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

*

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

* @param num

* @return

*/

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

NumberFormat nf = NumberFormat.getInstance();

if (!isFormat) {

//設(shè)置輸出格式是否使用“,”分組,默認(rèn)是使用的

nf.setGroupingUsed(false);

}

String result = nf.format(num);

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

return result;

}

/**

* 移除數(shù)字前面和后面冗余的0

*

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

* @param num

* @param fractionDigit 要保留的小數(shù)位數(shù)

* @return

*/

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

NumberFormat nf = NumberFormat.getInstance();

nf.setMaximumFractionDigits(fractionDigit);

//setMaximumFractionDigits不會(huì)保留小數(shù)點(diǎn)和后面多余的0,不需下面正則去除

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

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

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

// }

if (!isFormat) {

//設(shè)置輸出格式是否使用“,”分組,默認(rèn)是使用的

nf.setGroupingUsed(false);

}

String result = nf.format(num);

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

return result;

}

/**

* 指定位數(shù)輸出,不足補(bǔ)0

* 整數(shù)部分如果位數(shù)大于需要的位數(shù)按實(shí)際位數(shù)輸出

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

*

* @param num

* @param integerDigit 整數(shù)部分位數(shù)

* @param fractionDigit 小數(shù)部分位數(shù)

* @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);

}

/**

* 保留幾位小數(shù),不足不補(bǔ)0,小數(shù)部分冗余的0也不顯示

*

* @param num

* @param fractionDigit 要保留小數(shù)的位數(shù)

* @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);

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

nf.setGroupingUsed(false);

return nf.format(num);

}

}

總結(jié)

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

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。