【老白学 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 下一篇 日期/时间格式化 》
相关推荐
dragon_perfect3 分钟前
全流程基于Yolov8实现在Label-Studio实现半自动标注,已经把整个流程理清楚,把所有的坑解决。
开发语言·python·yolo·labelstudio
Java中文社群8 分钟前
炸裂:SpringAI新版发布,终于支持断线重连了!
java·后端·ai编程
kalvin_y_liu8 分钟前
四款主流深度相机在Python/C#开发中的典型案例及技术实现方案
开发语言·python·数码相机
劲镝丶8 分钟前
malloc概述
c语言·开发语言·c++
哈喽姥爷28 分钟前
Spring Boot--Bean的扫描和注册
java·spring boot·后端·bean的扫描和注册
problc28 分钟前
Spring Boot `@Service` 互相调用全攻略:`@Autowired` vs `@Resource`
java·spring boot·后端
1373i1 小时前
【Python】pytorch数据操作
开发语言·pytorch·python
码熔burning1 小时前
JVM 对象创建的核心流程!
java·jvm
努力努力再努力wz1 小时前
【C++进阶系列】:万字详解红黑树(附模拟实现的源码)
java·linux·运维·c语言·开发语言·c++
毕设源码纪师姐1 小时前
计算机毕设 java 高校机房综合管控系统 基于 SSM+Vue 的高校机房管理平台 Java+MySQL 的设备与预约全流程系统
java·mysql·课程设计