Java 数字格式类
Java格式 - Java数字格式类
以下两个类可用于格式化和解析数字:
- java.text.NumberFormat
- java.text.DecimalFormat
NumberFormat 类可以格式化一个数字特定地区的预定义格式。
DecimalFormat 类可以格式化数字以特定区域设置的自定义格式。
NumberFormat类的 getXXXInstance()方法返回格式化程序对象的实例。
XXX可以由数字,货币,整数或百分比替换,或只是getInstance()。这些方法都是重载的。
如果你调用它们没有参数,它们返回一个格式化对象默认语言环境。
使用number参数调用format()方法以将格式化的数字作为字符串。
import java.text.NumberFormat;
public class Main {
public static void main(String[] args) {
NumberFormat formatter;
// Get number formatter for default locale
formatter = NumberFormat.getInstance();
System.out.println(formatter.format(12312.123123));
}
}
上面的代码生成以下结果。

例子
下面的代码说明了如何以默认格式为当前语言环境,法语语言环境和德语语言环境格式化数字。
import java.text.NumberFormat;
import java.util.Locale;
public class Main {
public static void main(String[] args) {
double value = 123456789.9876543;
// Default locale
printFormatted(Locale.getDefault(), value);
// Indian locale
Locale indianLocale = new Locale("en", "IN");
printFormatted(indianLocale, value);
}
public static void printFormatted(Locale locale, double value) {
// Get number and currency formatter
NumberFormat nf = NumberFormat.getInstance(locale);
NumberFormat cf = NumberFormat.getCurrencyInstance(locale);
System.out.println("Format value: " + value + " for locale: " + locale);
System.out.println("Number: " + nf.format(value));
System.out.println("Currency: " + cf.format(value));
}
}
上面的代码生成以下结果。

DecimalFormat类
要执行更高级的格式化,我们可以使用DecimalFormat类。
DecimalFormat类允许我们提供我们自己的格式模式。 的下表显示模式及其用法。
| 符号 | 位置 | 含义 |
|---|---|---|
0 | Number | 代表数字 |
# | Number | 数字,零显示为不存在 |
. | Number | 小数分隔符或货币小数分隔符 |
- | Number | 减号 |
, | Number | 分组分隔符 |
E | Number | 以科学记数法分隔尾数和指数。 |
; | 子模式边界 | 分隔正和负子模式 |
% | 字首或字尾 | 乘以100并以百分比显示 |
\u2030 | 字首或字尾 | 乘以1000,并显示为每毫米值 |
一旦我们创建了DecimalFormat类的对象,就可以改变格式模式使用其 applyPattern()方法。
import java.text.DecimalFormat;
public class Main {
private static DecimalFormat formatter = new DecimalFormat();
public static void main(String[] args) {
formatNumber("##.##", 12.345);
formatNumber("##.##", 12.345);
formatNumber("0000.0000", 12.345);
formatNumber("#.##", -12.345);
// Positive and negative number format
formatNumber("#.##;(#.##)", -12.735);
}
public static void formatNumber(String pattern, double value) {
// Apply the pattern formatter.applyPattern ( pattern );
String formattedNumber = formatter.format(value);
System.out.println("Number:" + value + ", Pattern:" + pattern
+ ", Formatted Number:" + formattedNumber);
}
}
上面的代码生成以下结果。

解析
我们还可以使用 parse()方法将字符串解析为数字。 parse()方法返回 java.lang.Number 类的对象。
我们可以使用 java.lang.Number 类中的xxxValue()方法来获取原始值,其中xxx可以是byte,double,float,int,long和short。
import java.text.DecimalFormat;
import java.text.ParsePosition;
public class Main {
private static DecimalFormat formatter = new DecimalFormat();
public static void main(String[] args) {
// Parse a string to decimal number
String str = "qq1,234.567";
String pattern = "#,###.###";
formatter.applyPattern(pattern);
// Create a ParsePosition object to specify the first digit of
// number in the string. It is 1 in "qq1,234.567"
// with the index 2.
ParsePosition pp = new ParsePosition(2);
Number numberObject = formatter.parse(str, pp);
double value = numberObject.doubleValue();
System.out.println("Parsed Value is " + value);
}
}
上面的代码生成以下结果。


免费 AI IDE


更多建议: