NumberFormat和DecimalFormat

##NumberFormat##

调用NumberFormat的工厂方法,如getInstance(),来获取具体语言环境的NumberFormat(包括默认语言环境)。该类设计有各种功能,使其能够解析和格式化任意语言环境中的数,包括对西方语言、阿拉伯语和印度语数字的支持。它还支持不同类型的数,包括整数(123)、定点数(123.4)、科学记数法表示的数(1.23E4)、百分数(12%)和金额($123)。所有这些内容都可以本地化。 (通常不直接调用DecimalFormat的构造方法,因为NumberFormat的工厂方法可能返回不同于DecimalFormat的子类。DecimalFormat是NumberFormat的一个具体子类,用于格式化十进制数字。)

	/**
	 * 格式化format
	 * */
	NumberFormat numberFormat = NumberFormat.getNumberInstance(Locale.US);
	numberFormat.setMaximumIntegerDigits(5); // 整数部分最大位数
	numberFormat.setMinimumIntegerDigits(3); // 整数部分最小位数
	numberFormat.setMaximumFractionDigits(5); // 小数部分最大位数
	numberFormat.setMinimumFractionDigits(3); // 小数部分最小位数
	String number1 = numberFormat.format(1234567.1234567); // 34,567.12346 四舍五入
	String number2 = numberFormat.format(12.12); // 012.120 补0

	Log.d(TAG, " numberFormat : number1=" + number1 + ", number2=" + number2);

	NumberFormat currencyFormat = NumberFormat.getCurrencyInstance(Locale.CHINA);
	String currency1 = currencyFormat.format(321283.47656); // ¥ 321,283.48
	currencyFormat.setMaximumFractionDigits(3);
	String currency2 = currencyFormat.format(321283.47656); // ¥ 321,283.477

	Log.d(TAG, " currencyFormat : number1=" + currency1 + ", number2=" + currency2);

	NumberFormat percentFormat = NumberFormat.getPercentInstance(Locale.US);
	String percent1 = percentFormat.format(321283.47656); //32,128,348%
	Log.d(TAG, " percentFormat : number1=" + percent1 + ", number2=" + percent1);

	/**
	 * 解析parse
	 * */
	NumberFormat nf1 = NumberFormat.getInstance(Locale.US);
	Object obj1 =  nf1.parse("123,456");
	NumberFormat nf2 = NumberFormat.getInstance(Locale.GERMAN); // 德国
	Object obj2 = nf2.parse("123,456");

	//Number parse : number1=123456, number2=123.456
	Log.d(TAG, "Number parse : number1=" + obj1 + ", number2=" + obj2);

	Number number = percentFormat.parse("32,128,745%");
	Log.d(TAG, "===" + number.doubleValue()); //321287.45
	Log.d(TAG, "===" + number.floatValue()); //321287.44
	Log.d(TAG, "===" + number.intValue()); //321287
	Log.d(TAG, "===" + number.byteValue()); //7
	Log.d(TAG, "===" + number.longValue()); //321287

##DecimalFormat##

	DecimalFormat df1 = new DecimalFormat("0.0");
	DecimalFormat df2 = new DecimalFormat("#.#");
	DecimalFormat df3 = new DecimalFormat("000.000");
	DecimalFormat df4 = new DecimalFormat("###.###");

	Log.d(TAG,df1.format(12.35)); //12.4
	Log.d(TAG,df2.format(12.34)); //12.3
	Log.d(TAG,df3.format(12.34)); //012.340
	Log.d(TAG,df4.format(12.34)); //2.34		

参考: 官方文档 https://developer.android.com/reference/java/text/DecimalFormat.html DecimalFormat()格式化输出数字 http://blog.sina.com.cn/s/blog_8b7a1553010172ex.html java保留两位小数 http://blog.csdn.net/yuhua3272004/article/details/3075436

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值