版权声明:未经协商,禁止转载 https://blog.csdn.net/CHENFU_ZKK/article/details/82719054
- NumberFormat简介
NumberFormat 是所有数值格式的抽象基类。此类提供格式化和解析数值的接口。
可用于格式化和解析任何语言环境的数值。使代码能够完全独立于小数点、千位分隔符甚至所用特定小数位数的语言环境约定,并与数值格式是否为偶小数无关。
使用 getInstance 或 getNumberInstance 来获取常规数值格式。
使用 getIntegerInstance 来获取整数数值格式。
使用 getCurrencyInstance 来获取货币数值格式。
使用 getPercentInstance 来获取显示百分比的格式。使用此格式,小数 0.53 将显示为 53%。
使用 setMinimumFractionDigits 之类的方法还可以控制数值的显示。
如果想对格式化和解析进行更多的控制(或者给予用户更多的控制),可以尝试将从工厂方法获取的 NumberFormat 强制转换为 DecimalFormat。这适用于大多数语言环境;只是要记住将其放入一个 try 代码块中,以防遇到特殊情况。 - getInstance
getNumberInstance的结果一致
package com.text;
import java.text.NumberFormat;
import java.text.ParseException;
import java.text.ParsePosition;
import java.util.Locale;
public class NumberFormatTest {
public static void main(String[] args) throws ParseException {
// 千分位格式化
NumberFormat numberFormat = NumberFormat.getInstance(Locale.getDefault());
System.out.println(numberFormat.format(Integer.valueOf(12345)));
System.out.println(numberFormat.format(Long.valueOf(-34567L)));
System.out.println(numberFormat.format(Float.valueOf(12345.5234f)));
System.out.println(numberFormat.format(Double.valueOf(-12345.4235)));
}
}
输出结果:
12,345
-34,567
12,345.523
-12,345.424
- getIntegerInstance
只保留整数部分
package common.number;
import java.math.RoundingMode;
import java.text.NumberFormat;
public class SaveInteger {
public static void main(String[] args) {
// 保留整型的实例
NumberFormat integerInstance = NumberFormat.getIntegerInstance();
// 设置保留的整数位数
integerInstance.setMaximumIntegerDigits(2);
// 设置实例以四舍五入的方式截取整数部分
// RoundingMode是一个枚举类,内部有多种数据保留策略
integerInstance.setRoundingMode(RoundingMode.HALF_UP);
System.out.print(integerInstance.format(1));
System.out.print("\t"+integerInstance.format(123));
System.out.print("\t"+integerInstance.format(12));
System.out.print("\t"+integerInstance.format(12.34));
System.out.print("\t"+integerInstance.format(12.5));
System.out.print("\t"+integerInstance.format(-12.5));
System.out.print("\t"+integerInstance.format(-12.3));
}
}
打印结果:
1
23
12
12
13
-13
-12
- getCurrencyInstance
package com.text;
import java.text.NumberFormat;
import java.text.ParseException;
import java.text.ParsePosition;
import java.util.Locale;
public class NumberFormatTest {
public static void main(String[] args) throws ParseException {
// 千分位格式化金钱
NumberFormat numberFormat = NumberFormat.getCurrencyInstance(Locale.getDefault());
System.out.println(numberFormat.format(Integer.valueOf(12345)));
System.out.println(numberFormat.format(Long.valueOf(34567L)));
System.out.println(numberFormat.format(Double.valueOf(12345.4567)));
}
}
输出结果:
¥12,345.00
¥34,567.00
¥12,345.46
- getPercentInstance
package common.number;
import java.text.NumberFormat;
import java.text.ParseException;
public class PercentNumber {
public static void main(String[] args) throws ParseException {
// 百分比格式化实例
NumberFormat percentInstance = NumberFormat.getPercentInstance();
// 保留小数点后几位
percentInstance.setMaximumFractionDigits(2);
System.out.println(percentInstance.format(1));
System.out.println(percentInstance.format(1.2));
System.out.println(percentInstance.format(.1));
System.out.println(percentInstance.format(0.12));
System.out.println(percentInstance.format(-0.12345));
System.out.println(percentInstance.format(0.2155));
}
}
输出结果:
100%
120%
10%
12%
-12.35%
21.55%