java – DecimalFormat给出的货币符号看起来无效

我在java 8中遇到了以下问题

import java.util.*;
import java.text.*;
import java.lang.*;

class NumberTest5 {
    public static void main(String[] args) {
        Locale loc = new Locale("sr","ME");
        DecimalFormat df = (DecimalFormat)NumberFormat.getCurrencyInstance(loc);
        System.out.println("\n"+"currencySymbol:"+df.getPositivePrefix()+"\tlength:"+df.getPositivePrefix().length());
        //here the above result is currencySymbol:  €+(non breakable space char)
        //length:2     
    }
}

真正的问题是为什么货币符号附加了额外的字符..?

为什么上述程序以这种方式表现……?

它的问题是什么?如何纠正它..?

谢谢

最佳答案
这不是无效的.

下列

Locale loc = new Locale("sr","ME");

代表黑山塞尔维亚语的地区.我找不到Java的等价物,但here是glibc的这个语言环境的描述.在货币下,您会注意到符号和值之间的空格分隔设置为1,表示这一点

a space separates the symbol from the value

因此,如果您格式化了一个值,例如

System.out.println(df.format(123.45));

你会得到的

€ 123,45

货币符号之间的空格值.

这就是积极的前缀所代表的.

转载注明原文:java – DecimalFormat给出的货币符号看起来无效 - 代码日志