【老白学 Java】数字格式化

数字格式化

文章来源:《Head First Java》修炼感悟。

很多时候需要对数字或日期进行格式化操作,来达到某些输出效果。Java 的 Formatter 类提供了很多扩展性功能用于字符串的格式化,只要调用 String 静态方法 format() ,传入参数并设定格式就可以得到满意的字符串。

一、基本语法

1、方法定义

java 复制代码
public static String format(String format, Object... args);

2、 方法参数

  • format 格式字符串,描述如何格式化,必须以格式说明符 % 开始;
  • args 格式字符串中由格式说明符引用的参数。如果还有格式说明符以外的参数,则忽略。这个参数是可变参数,也可以为 0。

3、方法返回值

  • 返回格式化后的字符串。

4、格式字符串

  • %,格式说明符,表示用它后面的格式去格式化对应的原始数据;
  • flags,标识符,例如以逗号分隔数字,或者为数字添加正负号等;
  • width,输出的字符串最小宽度(字符数);
  • precision,输出位数,例如指定小数位数,截取字符个数等;
  • type,数据类型,必须指定。

老白提醒: 以上是完整格式,其中方括号中的选项可以省略,但格式说明符和类型符号不能省略。

二、常用格式设定

  • %d 十进制整数,以逗号分隔,例如:
java 复制代码
String.format("%,d", 1000000000);
// 输出结果:1,000,000,000
  • %f,浮点数,默认保留6位小数点(四舍五入),例如:
java 复制代码
String.format("%f", 4387.2983749872);
// 输出结果:4387.298375
  • %.nf,浮点数,保留 n 位小数点(四舍五入),例如:
java 复制代码
String.format("%.2f", 4387.2983749872);
// 输出结果:4387.30
  • %nf,浮点数右对齐,输出至少占据 n 个字符宽度,例如:
java 复制代码
String.format("|%,6.1f|", 42.000);
// 输出结果:|  42.0|
  • %-nf,浮点数左对齐,输出至少占据 n 个字符宽度,例如:
java 复制代码
String.format("|%,-6.1f|", 42.000);
// 输出结果:|42.0  |
  • %.ns,字符串,截取前 n 个字符,例如:
java 复制代码
String.format("%.5s", "hello world");
// 输出结果:hello
  • %0nd,在前面补零,直到满足 n 个字符宽度,例如:
java 复制代码
String.format("%08d", 123);
// 输出结果:00000123

三、格式化多个参数

format() 方法可以同时格式化多个参数,例如有这样一个字符串:
The rank is 20,456,654 out of 100,567,890.24.

要想达到上述效果,需要对字符串中的两个数字分别进行格式化。 例如:

java 复制代码
int one = 20456654;
double two = 100567890.243907;
String s = String.format("The rank is %,d" out of %,.2f, one, two);

// 输出结果:The rank is 20,456,654 out of 100,567,890.24

参数 one 对应第一个格式标识符,two 对应第二个格式标识符,允许后面跟随多个参数。


《 上一篇 人性化的 Autoboxing 下一篇 日期/时间格式化 》
相关推荐
Dxy123931021612 分钟前
python制造一个报错
开发语言·python
流星白龙16 分钟前
【C++算法】41模拟_外观数列
开发语言·c++·算法
小丸子灬1 小时前
clipboard----封装复制组件
开发语言·javascript
Listen·Rain1 小时前
Excel拆分脚本
java·数据库·excel
小萌新~~~~2 小时前
在Scala中正则表达式的类型
开发语言·正则表达式·scala
洋芋爱吃芋头2 小时前
scala的泛型2
开发语言·后端·scala
悻运2 小时前
scala的泛型类
开发语言·后端·scala
2401_833788052 小时前
Scala函数的泛型
开发语言·后端·scala
licy__3 小时前
Vue 2 中 v-text 和 v-html 指令的使用详解
开发语言·前端·javascript
wa的一声哭了3 小时前
word中写论文的一些trick
java·数据库·python·sql·mysql·oracle·perl