java金额格式化 .00_[转]Java数字、货币值和百分数等的格式化处理

本文介绍了如何使用`java.text.Format`类对数字、货币值和百分数进行格式化输出,包括使用本地默认格式和特定国家/地区的格式。示例代码展示了如何设置最多/最少整数位和小数位,并演示了如何解析格式化的数字。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

作者:DotJox

转自:csdn

整理:马嘉楠

如果我们用下列语句输出一个数

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

System.out.println(123456.789);

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

将会在Console看到输出

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

123456.789

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

那么如何得到“123,456.789”这种格式化的输出呢?

这里就需要用到java.text.Format这个类。

不仅是数字,它还提供了货币值和百分数的格式化输出,例如0.58的百分数输出形式是58%。

要获得本地的默认格式,可以用下列方法获得:

NumberFormat.getNumberInstance()

NumberFormat.getCurrencyInstance()

NumberFormat.getOpercentInstance()

而要获得某个国家或地区的具体格式,可以使用参数Local.XXX。例如,Local.GERMANY,Local.UK。

范例:

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

import java.text.NumberFormat;

import java.util.Locale;

public class FormatTest{

public static void main(String args[]){

//不使用格式化输出数

double d = 10000.0/3.0;

System.out.println("无格式化输出:" + d);

//使用本地默认格式输出数

NumberFormat numberFormat = NumberFormat.getNumberInstanc();

//numberFormat.setMaximumFractionDigits(4);

//numberFormat.setMinimumIntegerDigits(6);

String numberString = numberFormat.format(d);

System.out.println("本地默认格式输出数:" + numberString);

//使用本地默认格式输出货币值

NumberFormat currencyFormat = NumberFormat.getCurrencyInstance();

System.out.println("本地默认格式输出货币值:" + currencyFormat.format(d));

//使用本地默认格式输出百分数

NumberFormat percentFormat = NumberFormat.getPercentInstance();

System.out.println("本地默认格式输出百分数:" + percentFormat.format(d));

//在不同的国家各地区数字表示的格式也有区别。例如德国

//使用德国的格式化输出数

NumberFormat numberFormatG = NumberFormat.getNumberInstance(Local.GERMANY);

System.out.println("德国数字输出形式:" + numberFormatG.format(d));

//使用德国货币输出形式

NumberFormat currencyFormatG = NumberFormat.getCurrencyInstance(Local.GERMANY);

System.out.println("德国货币输出形式:" + currencyFormatG.format(d));

//使用美国货币输出形式

NumberFormat currencyFormatA = NumberFormat.getCurrencyInstance(Local.US);

System.out.println("美国货币输出形式:" + currencyFormatG.format(d));

//使用德国百分数输出形式

NumberFormat percentFormatG = NumberFormat.getPercentInstance(Local.GERMANY);

System.out.println("德国百分数输出形式:" + percentFormatG .format(d));

System.exit(0);

}

}

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

程序输出

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

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

由于欧元符号无法在此Console输出,所以显示?

可以指定显示的最多(或最少)整数位和小数位。如

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

double d = 10000.0/3.0;

NumberFormat numberFormat = NumberFormat.getNumberInstance();

numberFormat.setMaximumFractionDigits(4);

numberFormat.setMinimumIntegerDigits(6);

String numberString = numberFormat.format(d);

System.out.println(numberString);

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

输出:

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

003,333.3333

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

整数位不够的补零,小数截去部分四舍五入。

也可以利用NumberFormat的一个子类DecimalFormat来指定输出格式。

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

DecimalFormat decimalFormat = new DecimalFormat("######.0000");

String s = decimalFormat.format(d);

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

和前面一样,显示6个整数位和4个小数位。

下面对格式化的数字进行解析。

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

import java.util.Locale;

import java.text.NumberFormat;

import java.text.ParseException;

public class ParseFormat{

public static void main(String args[]){

//本地格式的解析

NumberFormat numberFormat1 = NumberFormat.getNumberInstance();

Number numb1 = null;

try

{

numb1 = numberFormat1.parse("33,333.33");

}

catch(ParseException e1)

{

System.err.println(e1);

}

System.out.println(number1);

//以德国格式解析

NumberFormat numberFormat2 = NumberFormat.getNumberInstance(Locale.GERMANY);

Number numb2 = null;

try

{

numb2 = numberFormat2.parse("33,333.33");

}

catch(ParseException e2)

{

System.err.println(e2);

}

System.out.println(number2);

System.exit(0);

}

}

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

程序输出:

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

33333.33 33.333

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

同样一种格式33,333.33,有人将之理解为33333.33,也有人认为它是33.333,软件国际化的重要性可见一斑。

马嘉楠

jianan.ma@gmail.com

posted on 2006-07-18 23:47 马嘉楠 阅读(2210) 评论(0)  编辑  收藏

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值