• 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本符号放置在数字的前缀或后缀,作为货币记号
    '本符号位单引号,当上述特殊字符出现在数字中时,且为特殊符号添加了单引号,系统会将这些特殊符号视为普通符号处理
    1. package classInfo;
    2. import java.text.DecimalFormat;
    3. public class DecimalFormatSimpleDemo {
    4. //使用实例化对象时设置格式化格式
    5. public static void SimpleFormat(String pattern, double value) {
    6. DecimalFormat myFormat = new DecimalFormat(pattern); //实例化DecimalFormat对象
    7. String outPut = myFormat.format(value); //将数字进行格式化
    8. System.out.println(value + " " + pattern + " " + outPut);
    9. }
    10. //使用applyPattern()方法对数字进行格式化
    11. public static void UseApplyPatternMethodFormat(String pattern, double value) {
    12. DecimalFormat myFormat = new DecimalFormat(); //实例化DecimalFormat对象
    13. myFormat.applyPattern(pattern); //调用applyPattern()方法设置格式化模板
    14. String outPut = myFormat.format(value); //将数字进行格式化
    15. System.out.println(value + " " + pattern + " " + outPut);
    16. }
    17. public static void main(String[] args) {
    18. SimpleFormat("###,###.###", 123456.789); //调用静态SimpleFormat()方法:123,456.789
    19. SimpleFormat("0000000000.###kg", 123456.789); //在数字后面加上单位:0000123456.789kg
    20. //按照格式化模板格式化数字,不存在的位以0显示
    21. SimpleFormat("0000000.000", 123.78); //0000123.780
    22. //调用静态UseApplyPatternMethodFormat()方法
    23. UseApplyPatternMethodFormat("###.####%", 0.789); //将数字转换为百分数形式: 78.9%
    24. UseApplyPatternMethodFormat("###.##", 1234.232); //将小数点后格式化为2位: 1234.23
    25. UseApplyPatternMethodFormat("000.00\u2030", 0.789); //将数字转换为千分位数表示: 789.00‰
    26. }
    27. }
    28. 输出:
    29. 123456.789 ###,###.### 123,456.789
    30. 123456.789 0000000000.###kg 0000123456.789kg
    31. 123.78 0000000.000 0000123.780
    32. 0.789 ###.####% 78.9%
    33. 1234.232 ###.## 1234.23
    34. 0.789 000.00789.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);        //设置是否支持分组

    1. package classInfo;
    2. import java.text.DecimalFormat;
    3. public class DecimalMethod {
    4. public static void main(String[] args) {
    5. DecimalFormat myFormat = new DecimalFormat();
    6. myFormat.setGroupingSize(2); //设置将数字分组为2
    7. String outPut = myFormat.format(123456.789);
    8. System.out.println("将数字以每2个数字分组:" + outPut);
    9. myFormat.setGroupingUsed(false);
    10. String outPut2 = myFormat.format(123456.789);
    11. System.out.println("不允许数字分组:" + outPut2);
    12. }
    13. }
    14. 输出:
    15. 将数字以每2个数字分组:12,34,56.789
    16. 不允许数字分组:123456.789

  • 相关阅读:
    html5期末大作业:自适应网站开发——公司网站7页 ,响应式页面
    使用Python进行音频处理
    iOS开发-CoreNFC实现NFC标签Tag读取功能
    [Java、Android面试]_05_内存泄漏和内存溢出
    指针的定义、初始化和引用
    为什么需要线程池?C++如何实现一个线程池?
    快鲸scrm教你用游戏化思维做社群运营
    11.FreeRTOS_事件组
    python从入门到实践 第17章:使用API自己感悟和部分代码
    Idea怎么配置Maven才能优先从本地仓库获取依赖
  • 原文地址:https://blog.csdn.net/qq_40132294/article/details/133846292