在解决实际问题时,对数字的处理是非常普遍的,如数学问题、随机问题、商业货币问题、科学计数问题等。为了应对以上问题,Java提供了处理相关问题的类,包括DecimalFormat类(用于格式化数字)、Math类(为各种数学计算提供了工具方法)、Random类(为Java处理随机数问题提供了分钟方法)、BigInteger类与BigDecimal类(为所有大数字的处理提供了相应的数学运算操作方法)。

下面一一介绍这个数字处理类:

一、数字格式化

在Java中使用java.text.DecimalFormat格式化数字。

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

1.如果数据绝对值大于0.001并且小于10000000,Java将以常规小数形式表示。

2.如果数据绝对值小于0.001或者大于10000000,使用科学记数法表示。

DecimalFormat是NumberFormat的一个子类,用于格式化十进制数字。它可以将一些数字格式化为整数、浮点数、百分数等。通过使用该类可以为要输出的数字加上单位或控制数字的精度。一般情况下可以在实例化DecimalFormat对象时传递数字格式化,也可以通过DecimalFormat类中的applyPattern()方法来实现数字格式化。

                                             DecimalFormat类中的格式化模板中的特殊字符

字符 说明
0 代表阿拉伯数字,使用特殊字符“0”表示数字的一位阿拉伯数字,如果该位不存在数字,则显示0
# 代表阿拉伯数字,使用特殊字符“#”表示数字的一位阿拉伯数字,如果该位存在数字,则显示字符;如果该位不存在数字,则不显示
. 小数分隔符或货币小数分隔符
- 负号
分组分隔符
E 分隔科学记数法中的尾数和指数
% 本符号放置在数字的前缀或后缀,将数字乘以100显示为百分数
\u2030 本符号放置在数字的前缀或后缀,将数字乘以1000显示为千分数
\u00A4 本符号放置在数字的前缀或后缀,作为货币记号
' 本符号为单引号,当上述特殊字符出现在数字中时,应为特殊符号添加单引号,系统会将此符号视为普通符号处理
package hello;import java.text.DecimalFormat;  //引入 类public class DecimalFormatSimpleDemo {//使用实例化对象时设置格式模式static public void SimpleFormat(String pattern,double value) {DecimalFormat myFormat = new DecimalFormat(pattern);String output = myFormat.format(value);System.out.println(value+" "+pattern+" "+output);}//使用applyPattern()方法对数字进行格式化static public void UseApplyPatternMethodFormat(String pattern,double value) {DecimalFormat myFormat = new DecimalFormat();myFormat.applyPattern(pattern);System.out.println(value+" "+pattern+" "+myFormat.format(value));}public static void main(String[] args) {SimpleFormat("###,###.###",123456.789);SimpleFormat("00000000.###kg",123456.789);SimpleFormat("000000.000",123.78);UseApplyPatternMethodFormat("#.###%",0.789);UseApplyPatternMethodFormat("###.##",123456.789);UseApplyPatternMethodFormat("0.00\u2030",0.789);}}

从以上两个方法的结果可以看出以“0” 特殊字符构成的模板进行格式化时,当数字某位不存在时,将显示0;而以“#” 特殊字符构成的模板进行格式化操作时,格式化后的数字位数与数字本身的位数一致。

在DecimalFormat类中除了可以设置格式化模式来格式化数字之外,还可以使用一些特殊方法对数字进行格式化设置。

DecimalFormat myFormat = new DecimalFormat(); //实例化DecimalFormat类对象
myFormat.setGroupingSize(2);                  //设置数字分组的大小
myFormat.setGroupingUsed(false);              //设置是否支持分组
import java.text.DecimalFormat;public class DeciamlMethod {public static void main(String[] args) {// TODO 自动生成的方法存根DecimalFormat myFormat = new DecimalFormat();myFormat.setGroupingSize(2);       //设置将数字分组为2String output = myFormat.format(123456.789);System.out.println("将数字以每两个数字分组  "+output);myFormat.setGroupingUsed(false);  //设置不允许数字分组String output2 = myFormat.format(123456.789);System.out.println("不允许数字分组  "+output2);}}

Java中数字格式化相关推荐

  1. Java中数字格式化format方法

    如果是一个浮点类型的数字,想要保留指定的位数输出,则可以: DecimalFormat类 保留两位小数,这里的0是占一个字符,不足的补0,点是小数分隔符. DecimalFormat decimalF ...

  2. 二进制、八进制、十六进制和十进制的相互转换,原码反码补码计算以及Java中数字的存储

    1. Java中数字默认是十进制,二进制.八进制以及十六进制的表示如下 2. 二进制.八进制.十六进制和十进制的相互转换 2.1 为了不累赘描述,本文以百度的二进制小数转换为十进制小数为例,如下图 2 ...

  3. Java中时间格式化(获取指定时间)

    Java中时间格式化(获取指定时间,七天前) 1.通过获取当前系统时间,格式化后转为"yyyy-MM-dd HH:mm:ss"格式并输出: 2.可获取指定时间,如七天前,一年前等, ...

  4. java输出数字格式化_Java™ 教程(格式化数字打印输出)

    格式化数字打印输出 以前你已经看到使用print和println方法将字符串打印到标准输出(System.out),因为全部数字均可以转换为字符串(你将在本课后面看到),你可使用这些方法打印出任意的字 ...

  5. mysql中数字格式化_mysql中格式化数字详解

    最近因为工作的需求,需要对mysql中数字进行格式化,但发现网上的资料较少,索性自己总结一下,方便自己也帮助有需要的朋友们,下面话不多说,来一起看看详细的介绍: 一.format函数: 格式化浮点数 ...

  6. 震惊!java中日期格式化的大坑!

    前言 我们都知道在java中进行日期格式化使用simpledateformat.通过格式 yyyy-MM-dd 等来进行格式化,但是你知道其中微小的坑吗? yyyy 和 YYYY 示例代码 @Test ...

  7. java 验证时间格式 效率_有关Java中日期格式化的效率实录

    java中格式化日期为固定格式的字符串,无外乎有两种方法:DateFormat 和String.format(JDK1.5+) 但是哪个方法效率更高呢?本人做了一个实验,发现了一个很有趣的现象. 当系 ...

  8. Java中随心所欲格式化时间(快刀斩乱麻)

    YJava中随心所欲格式化时间(快刀斩乱麻) 最近在南航电子商务公司做feinar的项目的后期功能中的PNR(Pessenger Name Record)的解析,由于要使用中航信的IBE开发包,里面的 ...

  9. Java中数字的四舍五入和取整

    Java中对数字进行四舍五入或取整处理经常使用Math库中的三个方法: ceil floor round 1 ceil 向上取整 ceil英文释义:天花板.天花板在上面,所以是向上取整,好记了. Ma ...

最新文章

  1. Windows Server 2008 R2 Beta VHD镜像文件发布
  2. No module named ‘tensorflow.contrib‘
  3. 【转】c++中的sizeof
  4. 在线使用Octave、Matlab画单电荷等位线和电力线、matlab的nonconformant arguments错误
  5. c#可移动不规则窗体
  6. 如何在DB2安装重启后登陆Administrator系统账号
  7. STM32 map文件解析
  8. 摇篮善良:仅添加包装用于战争
  9. BZOJ 1640: [Usaco2007 Nov]Best Cow Line 队列变换
  10. 工信部:要实现并完善针对老年人增设的“一键进入”人工客服功能
  11. labelme新版本的使用须知
  12. 2.中小型企业通用自动化运维架构 -- Ansible 安装
  13. 几个函数泰勒展开式及其记忆技巧
  14. 华为畅享20plus能更鸿蒙不,甘南收购华为畅享20Plus尾插排线数据线耳机
  15. C#实现触摸屏自定义键盘
  16. java.net.url 中文乱码_asp.net URL中包含中文参数造成乱码的解决方法
  17. Photoshop 2023 v24.2 for Mac 中英文版有哪些新功能呢 支持M1 M2机型 增加了哪些新相机配 解决另存为黑屏的问题
  18. leetcode刷题规划
  19. ai论文调研——PAMI Popular Articles (December 2015)
  20. 一文读懂闪电网络工作原理

热门文章

  1. 批处理命令中的set/a 是什么意思
  2. 蒙哥马利大数模乘与RSA加密算法简介
  3. 有哪些电脑必备软件?5款良心软件!电脑必备软件看这一篇就够了
  4. 怎么把计算机设置在桌面显示器,笔记本怎么设置双屏显示 双屏显示设置方法...
  5. QQ实训项目(登录 注册 主界面 消息列表 资料卡)
  6. 散户炒股不想亏损的四项基本原则
  7. 洛谷P2433 小学数学 N 合一
  8. 【English】 详解 祈使句的用法
  9. 北斗导航 | RTK定位
  10. 第八周拓展实践1小明借书