Java中数字格式化
在解决实际问题时,对数字的处理是非常普遍的,如数学问题、随机问题、商业货币问题、科学计数问题等。为了应对以上问题,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中数字格式化相关推荐
- Java中数字格式化format方法
如果是一个浮点类型的数字,想要保留指定的位数输出,则可以: DecimalFormat类 保留两位小数,这里的0是占一个字符,不足的补0,点是小数分隔符. DecimalFormat decimalF ...
- 二进制、八进制、十六进制和十进制的相互转换,原码反码补码计算以及Java中数字的存储
1. Java中数字默认是十进制,二进制.八进制以及十六进制的表示如下 2. 二进制.八进制.十六进制和十进制的相互转换 2.1 为了不累赘描述,本文以百度的二进制小数转换为十进制小数为例,如下图 2 ...
- Java中时间格式化(获取指定时间)
Java中时间格式化(获取指定时间,七天前) 1.通过获取当前系统时间,格式化后转为"yyyy-MM-dd HH:mm:ss"格式并输出: 2.可获取指定时间,如七天前,一年前等, ...
- java输出数字格式化_Java™ 教程(格式化数字打印输出)
格式化数字打印输出 以前你已经看到使用print和println方法将字符串打印到标准输出(System.out),因为全部数字均可以转换为字符串(你将在本课后面看到),你可使用这些方法打印出任意的字 ...
- mysql中数字格式化_mysql中格式化数字详解
最近因为工作的需求,需要对mysql中数字进行格式化,但发现网上的资料较少,索性自己总结一下,方便自己也帮助有需要的朋友们,下面话不多说,来一起看看详细的介绍: 一.format函数: 格式化浮点数 ...
- 震惊!java中日期格式化的大坑!
前言 我们都知道在java中进行日期格式化使用simpledateformat.通过格式 yyyy-MM-dd 等来进行格式化,但是你知道其中微小的坑吗? yyyy 和 YYYY 示例代码 @Test ...
- java 验证时间格式 效率_有关Java中日期格式化的效率实录
java中格式化日期为固定格式的字符串,无外乎有两种方法:DateFormat 和String.format(JDK1.5+) 但是哪个方法效率更高呢?本人做了一个实验,发现了一个很有趣的现象. 当系 ...
- Java中随心所欲格式化时间(快刀斩乱麻)
YJava中随心所欲格式化时间(快刀斩乱麻) 最近在南航电子商务公司做feinar的项目的后期功能中的PNR(Pessenger Name Record)的解析,由于要使用中航信的IBE开发包,里面的 ...
- Java中数字的四舍五入和取整
Java中对数字进行四舍五入或取整处理经常使用Math库中的三个方法: ceil floor round 1 ceil 向上取整 ceil英文释义:天花板.天花板在上面,所以是向上取整,好记了. Ma ...
最新文章
- Windows Server 2008 R2 Beta VHD镜像文件发布
- No module named ‘tensorflow.contrib‘
- 【转】c++中的sizeof
- 在线使用Octave、Matlab画单电荷等位线和电力线、matlab的nonconformant arguments错误
- c#可移动不规则窗体
- 如何在DB2安装重启后登陆Administrator系统账号
- STM32 map文件解析
- 摇篮善良:仅添加包装用于战争
- BZOJ 1640: [Usaco2007 Nov]Best Cow Line 队列变换
- 工信部:要实现并完善针对老年人增设的“一键进入”人工客服功能
- labelme新版本的使用须知
- 2.中小型企业通用自动化运维架构 -- Ansible 安装
- 几个函数泰勒展开式及其记忆技巧
- 华为畅享20plus能更鸿蒙不,甘南收购华为畅享20Plus尾插排线数据线耳机
- C#实现触摸屏自定义键盘
- java.net.url 中文乱码_asp.net URL中包含中文参数造成乱码的解决方法
- Photoshop 2023 v24.2 for Mac 中英文版有哪些新功能呢 支持M1 M2机型 增加了哪些新相机配 解决另存为黑屏的问题
- leetcode刷题规划
- ai论文调研——PAMI Popular Articles (December 2015)
- 一文读懂闪电网络工作原理