数字、货币的格式化(NumberFormat)

2019-03-19 22:57|来源: 网路

NumberFormat类可以将一个数值格式化为符合某个国家地区习惯的数值字符串,也可以将符合某个国家地区习惯的数值字符串解析为对应的数值


NumberFormat类的方法:
   format 方法:将一个数值格式化为符合某个国家地区习惯的数值字符串
   parse 方法:将符合某个国家地区习惯的数值字符串解析为对应的数值。


实例化NumberFormat类时,可以使用locale对象作为参数,也可以不使用,下面列出的是使用参数的。

   1. getNumberInstance(Locale locale):以参数locale对象所标识的本地信息来获得具有多种用途的NumberFormat实例对象
   2. getIntegerInstance(Locale locale):以参数locale对象所标识的本地信息来获得处理整数的NumberFormat实例对象
   3. getCurrencyInstance(Locale locale):以参数locale对象所标识的本地信息来获得处理货币的NumberFormat实例对象
   4. getPercentInstance(Locale locale):以参数locale对象所标识的本地信息来获得处理百分比数值的NumberFormat实例对象


@Test
public void testNumberFormat() throws ParseException{
    NumberFormat nf = NumberFormat.getCurrencyInstance(Locale.CHINA);
    int money = 1000000;
    String s = nf.format(money);
    System.out.println(s);
    String s1 = "¥1,000,000";
    Number n = nf.parse(s1);
    System.out.println(n);
    double num = 0.5;
    nf = NumberFormat.getPercentInstance();
    System.out.println(nf.format(num));
}


¥1,000,000.00
1000000
50%


书生整理于网络


相关问答

更多

货币格式化功能是否真的有用?(Are currency formatting functions actually useful?)

至少在.NET中,数字格式与文化有关,而不是符号。 默认货币符号是与该文化相关的主要货币符号。 符号可以根据需要重写。 就像你的例子一样,如果我在一个字符串中嵌入一个货币值,那么我使用该字符串的文化作为格式,但是适当地覆盖货币符号。 其余格式保持原样。 另一方面,如果我正在做一个报告,所有的值都使用相同的文化进行格式化。 在这种情况下,我通常使用ISO 3字符代码而不是货币符号,尤其是涉及超过2种货币时,以避免字体问题。 Ryan对另一个问题的回答描述了C#中货币格式化的最佳实践。 At lea

在Java中格式化货币(Formatting currency in Java)

NumberFormat也适用于格式化货币(请参阅NumberFormat#getCurrencyInstance )。 因为你需要一个JFormattedTextField的Format ,我会从那里开始。 您可以将NumberFormat配置为允许十进制值,并在以后将代码转换为int而不会出现问题 The NumberFormat is also suited to format a currency (see NumberFormat#getCurrencyInstance). And s

格式化值时,如何避免NumberFormat(Locale).format()方法完成自动舍入?(How to avoid auto rounding done by NumberFormat(Locale).format() method while formatting a value?)

南巴里是对的。 看看这个: NumberFormat nf = NumberFormat.getCurrencyInstance(Locale.JAPAN); BigDecimal bd = new BigDecimal(123.456); String str = nf.format(bd); System.out.println("" + nf.getMaximumFractionDigits()); //prints out 0 System.out.println(str); 似乎日本

自定义数字格式化程序与货币符号(custom number formatter with currency symbol)

对于静态解决方案,您只需将格式从.#.##更改为.#.## € 如果您正在寻找通用的方法,那么您对符号¤感兴趣,符号¤负责货币符号。 所以你要找的格式是,#.## ¤ 最后一步是检查选项lenient ,否则您需要在文本字段中提供完整格式。 更多细节 从OSX 10.9和iOS 7开始,格式字符串使用来自版本31 的Unicode技术标准#35的模式。 您可以在此处找到此版本中的所有数字格式模式 有关数字格式化程序的Apple文档 For the static solution you can

在DT中舍入货币格式化的数字(Rounding currency formatted numbers in DT)

我的结论是你不能用DT添加2个格式化程序到同一列,虽然我当然可能是错的。 请注意,即使DT的文档中没有明确说明,每个列表也只能添加一个格式化程序。 另请注意,对于您提供的链接中的示例,或者当您键入?formatCurrency ,当它们包含两个管道%>% ,它们总是会影响到两个不同的列。 在你的例子中,当你这样做 datatable(m) %>% formatRound("A", digits=1) %>% formatCurrency("A", currency="£") 结果是1位数的圆形

相关文章

更多

最近更新

更多