Java 教程

Java 控制语句

面向对象编程

Java 内置类

Java 文件处理

Java 错误和异常

Java 多线程

Java 同步

Java 网络

Java 集合

Java 接口

Java 数据结构

Java 集合算法

高级 Java

Java 杂项

Java API 和框架

Java 类参考

Java 有用资源

Java - 简洁数字格式化



Java 12 引入了**简洁格式化**,我们可以将小数、货币或百分比的长数字格式化为短格式或长格式。例如,将 1000 格式化为 1K。这在空间有限或需要以短格式显示数字(例如 K 表示千、M 表示百万、B 表示十亿等)的情况下非常有用。我们也可以使用自定义字符串来显示大数字。

创建 CompactNumberFormat 实例

要为区域设置创建 CompactNumberFormat 的实例,可以使用 NumberFormat 的相关内置方法。

NumberFormat formatter = NumberFormat.getCompactNumberInstance(Locale.US, NumberFormat.Style.SHORT);

这里我们正在为美国区域设置和短格式样式创建一个格式化程序,这意味着 1000 将表示为 1K。类似地,我们可以为长格式创建实例,如下所示。

NumberFormat formatter = NumberFormat.getCompactNumberInstance(Locale.US, NumberFormat.Style.LONG);

在这种情况下,1000 将表示为 1 千,依此类推。

格式化值

创建格式化程序后,我们可以使用 format() 方法获取所需的格式化数字字符串。

//1000 will be formatted as 1K String formatted = formatter.format(1000) //1000000 will be formatted as 1M formatted = formatter.format(1000000)

Learn Java in-depth with real-world projects through our Java certification course. Enroll and become a certified expert to boost your career.

简洁数字格式化的示例

在下面的示例中,我们正在打印使用简洁数字格式化获取的长格式和短格式字符串。

Open Compiler
package com.tutorialspoint; import java.text.NumberFormat; import java.util.Locale; public class Tester { public static void main(String[] args) { // Create the formatter instance for Long format NumberFormat formatter = NumberFormat.getCompactNumberInstance( Locale.US, NumberFormat.Style.LONG); System.out.println("Long Formats"); // get the formatted strings System.out.println(formatter.format(1000)); System.out.println(formatter.format(1000 * 1000)); System.out.println(formatter.format(1000 * 1000 * 1000)); // Create the formatter instance for Short format formatter = NumberFormat.getCompactNumberInstance( Locale.US, NumberFormat.Style.SHORT); // get the formatted strings System.out.println("Short Formats"); System.out.println(formatter.format(1000)); System.out.println(formatter.format(1000 * 1000)); System.out.println(formatter.format(1000 * 1000 * 1000)); } }

让我们编译并运行上述程序,这将产生以下结果:

Long Formats
1 thousand
1 million
1 billion
Short Formats
1K
1M
1B

简洁数字格式化和小数位数

默认情况下,小数位数设置为零,但我们也可以使用以下方法设置最小小数位数。

NumberFormat formatter = NumberFormat.getCompactNumberInstance(Locale.US, NumberFormat.Style.SHORT); formatter.setMinimumFractionDigits(3); // It will print 10.012K System.out.println(formatter.format(10012));

示例:带小数的简洁数字格式化

在下面的示例中,我们正在打印使用简洁数字格式化获取的长格式和短格式字符串。

Open Compiler
package com.tutorialspoint; import java.text.NumberFormat; import java.util.Locale; public class Tester { public static void main(String[] args) { // Create the formatter instance for Short format NumberFormat formatter = NumberFormat.getCompactNumberInstance( Locale.US, NumberFormat.Style.SHORT); System.out.println("Without using Fractions"); // get the formatted strings System.out.println(formatter.format(10012)); System.out.println(formatter.format(10000012)); // set the minimum 2 fraction digits to display formatter.setMinimumFractionDigits(2); System.out.println("Using Fractions"); // get the formatted strings System.out.println(formatter.format(10012)); System.out.println(formatter.format(10000012)); } }

让我们编译并运行上述程序,这将产生以下结果:

Without using Fractions
10K
10M
Using Fractions
10.01K
10.00M
广告