string.format() 的 %.nf 可精确控制浮点数小数位数,n 指定小数位数,不足补零、超出四舍五入;支持边界值、负数及特殊浮点值,常用于金额、百分比等场景。
在 java 中,string.format() 的 %f 占位符可通过“宽度.精度”格式(如 %.2f)精确控制浮点数的小数位数,精度部分指定小数点后保留几位数字,不足补零,超出则四舍五入。
基本语法与精度控制
%f 默认显示 6 位小数,但可通过 %.Nf 显式指定小数位数 N(N ≥ 0):
-
%.0f:不显示小数部分,四舍五入到整数(如3.7→"4") -
%.2f:保留 2 位小数,自动补零或进位(如1.5→"1.50",2.876→"2.88") -
%.5f:强制显示 5 位小数(如3.14→"3.14000")
处理边界情况与注意事项
使用时需注意以下细节:
- 精度只控制小数位数,不影响整数部分宽度;若需整体对齐,可加宽度(如
%8.2f表示总宽至少 8 字符,右对齐) - 负数正常处理,符号占一位(如
%.2f格式化-1.234得"-1.23") - 值为
Double.NaN、Double.POSITIVE_INFINITY等特殊值时,输出对应字符串("NaN"、"Infinity"),不受精度影响 - 精度为 0 时仍会四舍五入,不是简单截断(
2.99→"3",而非"2")
常见实用写法示例
实际开发中常用组合形式:
- 金额显示:
String.format("¥%.2f", 123.456)→"¥123.46" - 百分比(乘 100 后):
String.format("%.1f%%", 0.873 * 100)→"87.3%" - 科学计算结果对齐:
String.format("%10.3f", Math.PI)→" 3.142"(总宽 10,右对齐) - 避免浮点误差干扰显示:即使
0.1 + 0.2实际为0.30000000000000004,%.2f仍输出"0.30"
替代方案提醒
若需更灵活的舍入模式(如始终向下取整、银行家舍入)或国际化格式(千分位、本地小数点符号),建议改用 DecimalFormat 或 BigDecimal 配合 RoundingMode。但仅需简单、一致的小数位控制时,%.Nf 最简洁可靠。
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南











