简体   繁体   English

使用NumberFormat或DecimalFormat

[英]Use NumberFormat or DecimalFormat

In most case, how can we justify, when shall we use 在大多数情况下,我们如何证明,何时使用

NumberFormat.getInstance();

When shall we use 我们何时使用

new DecimalForamt(...);

If you want to specify how your numbers are formatted, then you must use the DecimalFormat constructor. 如果要指定数字的格式,则必须使用DecimalFormat构造函数。 If you want "the way most numbers are represented in my current locale", then use the default instance of NumberFormat. 如果您想要“大多数数字在我当前的语言环境中表示的方式”,那么请使用NumberFormat的默认实例。

NumberFormat.getInstance actually gets the formatter based on the locale and number style. NumberFormat.getInstance实际上根据语言环境和数字样式获取格式化程序。 It might actually return the DecimalFormat() object. 它实际上可能会返回DecimalFormat()对象。 "DecimalFormat is a concrete subclass of NumberFormat that formats decimal numbers" - From JDK javadocs “DecimalFormat是NumberFormat的具体子类,用于格式化十进制数字” - 来自JDK javadocs

I had the same issue concerning locale. 我有与locale相同的问题。 You can create a DecimalFormat object for a US locale by instantiating a NumberFormat and then casting it to a DecimalFormat. 您可以通过实例化NumberFormat然后将其强制转换为DecimalFormat来为US语言环境创建DecimalFormat对象。 This is what Oracle says: 这就是Oracle所说的:

The preceding example created a DecimalFormat object for the default Locale. 上面的示例为默认的Locale创建了一个DecimalFormat对象。 If you want a DecimalFormat object for a nondefault Locale, you instantiate a NumberFormat and then cast it to DecimalFormat. 如果需要非默认语言环境的DecimalFormat对象,则实例化NumberFormat,然后将其强制转换为DecimalFormat。 Here's an example: 这是一个例子:

NumberFormat nf = NumberFormat.getNumberInstance(loc);

DecimalFormat df = (DecimalFormat)nf;

df.applyPattern(pattern);

String output = df.format(value);

System.out.println(pattern + " " + output + " " + loc.toString());

https://docs.oracle.com/javase/tutorial/i18n/format/decimalFormat.html https://docs.oracle.com/javase/tutorial/i18n/format/decimalFormat.html

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM