NumberFormat API 说明

Posted

技术标签:

【中文标题】NumberFormat API 说明【英文标题】:NumberFormat API clarification 【发布时间】:2013-09-11 11:41:41 【问题描述】:

直接来自此 API:

NumberFormat 可帮助您格式化和解析任何语言环境的数字。 您的代码可以完全独立于语言环境约定 小数点,千位分隔符,甚至是特定的小数 使用的数字,或数字格式是否为偶数。

or even the particular decimal digits used, or whether the number format is even decimal. 是什么意思?

【问题讨论】:

【参考方案1】:

我可以举一个这样的例子——日元。 在日元中,没有什么比 1.2 日元更好的了;它总是一个整数,最低面额是 1 日元。所以日元的货币金额永远不会有小数位。

在印度,100 万显示为 10,00,000;而同样的美元是 1,000,000。

运行以下代码以查看数字语言环境的美妙之处:

import java.text.DecimalFormat;
import java.text.NumberFormat;
import java.util.Locale;


// The following example code demonstrates converting a number 
// (double) into a formatted String according to different 
// number formatting standards in various countries

public class FormatDecimalLocalFormat 

public static void main(String[] args) 

// circumference of earth in km
double number = 40075.168776;

// Germany
DecimalFormat df = (DecimalFormat) NumberFormat.getInstance(Locale.GERMAN);
System.out.println(df.format(number));

// United states
df = (DecimalFormat) NumberFormat.getInstance(Locale.US);
System.out.println(df.format(number));

// China
df = (DecimalFormat) NumberFormat.getInstance(Locale.CHINESE);
System.out.println(df.format(number));

// France
df = (DecimalFormat) NumberFormat.getInstance(Locale.FRENCH);
System.out.println(df.format(number));



输出确认到

您的代码可以完全独立于 小数点,千位分隔符,甚至是特定的小数 使用的数字,或数字格式是否为偶数。

40.075,169
40,075.169
40,075.169
40 075,169

【讨论】:

你还没有回答我的问题 请重新格式化您的问题。我猜你已经问过,语言环境的变化如何使代码/数据独立于表示;这个给定的工作代码就是最好的例子。 我可以附议:与其对接近答案的尝试投反对票,不如花时间澄清问题,这显然不像您想象的那么清楚。 我明确指出了我不清楚的地方。这就是我不明白的。但是,如果您没有得到问题。我指的是我突出显示的引用部分,这不是您的示例所显示的。 您的示例显示:Your code can be completely independent of the locale conventions for decimal points, thousands-separators,。我已经彻底理解了这个概念,这就是您在回答中所解释的。我想知道引用的其余部分的含义,即or even the particular decimal digits used, or whether the number format is even decimal.

以上是关于NumberFormat API 说明的主要内容,如果未能解决你的问题,请参考以下文章

NumberFormat 不会因 2 个小数分隔符而崩溃

NumberFormat类

php中带有大数字的numberformat错误

Java `NumberFormat` 假定数字类型不正确

无法使用 Excel JavaScript API 设置 NumberFormat

@NumberFormat 接受逗号和点,如何在 InitBinder 中实现