Java数字处理类--数字格式化

为了解决例如数学问题、随机问题、商业货币问题、科学技术问题等数字处理问题,Java提供了许多数字处理类,包括:

        【DecimalFormat类】用于格式化数字;

        【Math类】为各种数学计算提供了工具方法;

        【Random类】为处理随机数问题提供了各种方法;

        【BigInteger类】与【BigDecimal类】为所有大数字的处理提供了相应的数学运算操作方法。

1.数字格式化

        在Java中没有格式化的数据遵循一下原则:

        a.如果数据绝对值大于0.001并且小于10000000(1千万),使以常规小数表示;

        b.如果数据绝对值小于0.001或者大于10000000(1千万),使用科学计数法表示;

        在Java中使用java.text.DecimalFormat格式化数字为指定形式后输出,以满足实际需要;DecimalFormat类是NumberFormat类的一个子类,用于格式化十进制数字,可以将数字格式化为整数、浮点数、百分比数等,并且可以为要输出的数字加上单位或控制精度;使用时在实例化DecimalFormat对象时传递数字格式或通过DecimalFormat类中的applyPattern()方法来实现数字格式化。

1.1 实例化DecimalFormat对象时传递数字格式

1.2 通过DecimalFormat类中的applyPattern()方法

DecimalFormat类中特殊字符说明
字符 说明
0 代表阿拉伯数字,使用特殊字符“0”表示数字的一位阿拉伯数字,如果该位不存在数字,则显示0
# 代表阿拉伯数字,使用特殊字符“#”表示数字的一位阿拉伯数字,如果 该位不存在数字,则不显示
. 小数分割符或货币系数分隔符
- 负号
分组分隔符
E 分隔科学计数法中的尾数和指数
% 本符号放置在数字的前缀或后缀,将数字乘以100显示为百分数
\u2030 本符号放置在数字的前缀或后缀,将数字乘以1000显示为百分数
\u00A4 本符号放置在数字的前缀或后缀,作为货币记号
' 本符号位单引号,当上述特殊字符出现在数字中时,且为特殊符号添加了单引号,系统会将这些特殊符号视为普通符号处理
package classInfo;

import java.text.DecimalFormat;

public class DecimalFormatSimpleDemo {
    //使用实例化对象时设置格式化格式
    public static void SimpleFormat(String pattern, double value) {
        DecimalFormat myFormat = new DecimalFormat(pattern);    //实例化DecimalFormat对象
        String outPut = myFormat.format(value);     //将数字进行格式化
        System.out.println(value + " " + pattern + " " + outPut);
    }

    //使用applyPattern()方法对数字进行格式化
    public static void UseApplyPatternMethodFormat(String pattern, double value) {
        DecimalFormat myFormat = new DecimalFormat();   //实例化DecimalFormat对象
        myFormat.applyPattern(pattern);     //调用applyPattern()方法设置格式化模板
        String outPut = myFormat.format(value);     //将数字进行格式化
        System.out.println(value + " " + pattern + " " + outPut);
    }

    public static void main(String[] args) {
        SimpleFormat("###,###.###", 123456.789);     //调用静态SimpleFormat()方法:123,456.789
        SimpleFormat("0000000000.###kg", 123456.789);    //在数字后面加上单位:0000123456.789kg

        //按照格式化模板格式化数字,不存在的位以0显示
        SimpleFormat("0000000.000", 123.78);    //0000123.780

        //调用静态UseApplyPatternMethodFormat()方法
        UseApplyPatternMethodFormat("###.####%", 0.789);  //将数字转换为百分数形式: 78.9%
        UseApplyPatternMethodFormat("###.##", 1234.232); //将小数点后格式化为2位: 1234.23
        UseApplyPatternMethodFormat("000.00\u2030", 0.789);  //将数字转换为千分位数表示: 789.00‰
    }
}

输出:
        123456.789 ###,###.### 123,456.789
        123456.789 0000000000.###kg 0000123456.789kg
        123.78 0000000.000 0000123.780
        0.789 ###.####% 78.9%
        1234.232 ###.## 1234.23
        0.789 000.00‰ 789.00‰

1.3 特殊方法对数字进行格式化

        1.3.1 DecimalFormat.setGroupingSize(int value);

        此方法设置格式化数字分组的大小;

        1.3.2 DecimalFormat.setGroupingUsed(boolean value);

        此方法设置是否可以对数字进行分组操作;

DecimalFormat myFormat = new DecimalFormat();        //实例化DecimalForamt类对象

myFormat.setGroupingSize(2);        //设置将数字分组的大小

myForamt.setGroupingUsed(false);        //设置是否支持分组

package classInfo;

import java.text.DecimalFormat;

public class DecimalMethod {
    public static void main(String[] args) {
        DecimalFormat myFormat = new DecimalFormat();
        myFormat.setGroupingSize(2);    //设置将数字分组为2
        String outPut = myFormat.format(123456.789);
        System.out.println("将数字以每2个数字分组:" + outPut);

        myFormat.setGroupingUsed(false);
        String outPut2 = myFormat.format(123456.789);
        System.out.println("不允许数字分组:" + outPut2);
    }
}

输出:
        将数字以每2个数字分组:12,34,56.789
        不允许数字分组:123456.789

你可能感兴趣的:(Java,java,开发语言,数字处理类)