「这是我参与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));
这里注意下,2/4,不要直接除,把2或者4转换为浮点型再除(除了上面的方式,也可以使用*1.0 的方式)。不这样的话最后得到的结果就是0.00%。
DecimalFormat format = new DecimalFormat("0.00%");
System.out.println(format.format(2/4));
之所以这样,估计大佬们都懂。整数相除会直接丢掉小数,直接就变成了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));
本地化一般不会用,有兴趣的或者要用到的再去了解把。如果上述中有问题,请大佬指点。