NumberFormat的使用

版权声明:未经协商,禁止转载 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%

猜你喜欢

转载自blog.csdn.net/CHENFU_ZKK/article/details/82719054