java的数字格式化的方法

216 阅读2分钟

「这是我参与2022首次更文挑战的第1天,活动详情查看:2022首次更文挑战

在我们开发中,是否会遇到将两个数整除,然后保留几位小数。比如:2/4,结果显示为0.500,或者50%之类的。或者1000000,显示的时候用,分隔开,显示为100,000,000。还有就是按照科学计数法显示某个数字。上述情况中比较容易遇到的应该是%显示。

DecimalFormat format = new DecimalFormat("0.00%");
System.out.println(format.format((float)2/4));

image.png 这里注意下,2/4,不要直接除,把2或者4转换为浮点型再除(除了上面的方式,也可以使用*1.0 的方式)。不这样的话最后得到的结果就是0.00%。

DecimalFormat format = new DecimalFormat("0.00%");
System.out.println(format.format(2/4));

image.png 之所以这样,估计大佬们都懂。整数相除会直接丢掉小数,直接就变成了0,0格式化就变成了显示的结果。

new DecimalFormat(String pattern) //pattern的格式有那些
符号位置本地化含义
0数字阿拉伯数字
#数字阿拉伯数字,如果不存在则显示为空
.数字小数分隔符或货币小数分割符
-数字减号
,数字分组分割符
E数字分隔科学计数法中的尾数和指数。在前缀或后缀中无需加引号。
;子模式边界分割正数和负数子模式
%前缀或后缀乘以100显示为百分数
/u2030前缀或后缀乘以1000显示为千分数
¤(/u00A4)前缀或后缀货币符号
'前缀或后缀用于转义 比如'#'显示为#号

0和#的区别可以理解为精确的位数不同

System.out.println(new DecimalFormat("#.##").format(3.0));
System.out.println(new DecimalFormat("0.00").format(3.0));

image.png 本地化一般不会用,有兴趣的或者要用到的再去了解把。如果上述中有问题,请大佬指点。