当前位置: 首页 > news >正文

【老白学 Java】数字格式化

数字格式化

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

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

一、基本语法

1、方法定义

public static String format(String format, Object... args);

2、 方法参数

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

3、方法返回值

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

4、格式字符串

格式化描述

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

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

二、常用格式设定

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

三、格式化多个参数

format() 方法可以同时格式化多个参数,例如有这样一个字符串:
The rank is 20,456,654 out of 100,567,890.24.
要想达到上述效果,需要对字符串中的两个数字分别进行格式化。 例如:

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
http://www.lryc.cn/news/503151.html

相关文章:

  • useCallback和forwardRef的联合使用
  • C# .NET CORE 开发问题汇总
  • 【C语言】拆数字组成最大数
  • 【Git系列】根据提交打印邮箱
  • Nginx在处理客户端请求的并发性发面是否依赖Linux的多线程原理
  • Python生成对抗神经网络GAN预测股票及LSTMs、ARIMA对比分析ETF金融时间序列可视化
  • 深入了解C++中const的用法
  • 【Linux金典面试题(上)】41道Linux金典面试问题+详细解答,包含基本操作、系统维护、网络配置、脚本编程等问题。
  • 利用Python实现多元回归预测汽车价格
  • 抓包软件fiddler和wireshark使用手册
  • 初识三大 Observer
  • Eclipse MAT(Memory Analyzer Tool) 使用手册
  • TongWe7.0-东方通TongWeb控制台无法访问 排查
  • Ariba Procurement: Administration_Master data
  • 爬虫学习案例4
  • Angular模块化应用构建详解
  • 51c大模型~合集89
  • 【蓝桥杯备战】Day 1
  • FedAdam算法:供给方信用,数据质量;更新一致性
  • 内存卡格式化后的数据恢复全攻略
  • 介绍交叉熵损失(Cross-Entropy Loss)以及交叉熵在对比学习中的应用:中英双语
  • RabbitMQ的几个概念
  • Ollama部署大模型并安装WebUi
  • Debedium如何忽略Oracle的purge命令
  • PlantUML 语言
  • linux的 .so和.ko文件分别是什么?主要区别是什么?
  • XX服务器上的npm不知道咋突然坏了
  • 数据结构(优先级队列 :Priority Queue)
  • nginx.conf 请求时间部分参数说明新手教程
  • 【Linux-ubuntu通过USB传输程序点亮LED灯】