【发布时间】:2019-02-07 12:10:28
【问题描述】:
我编写了一个程序来返回带有某些国家货币符号的双精度值。为此,我使用getCurrencyInstance() 方法来获取特定国家/地区的符号。
问题是特定于我的笔记本电脑的 JDK-1.8 并且在在线编译器上运行良好。 我面临的问题是 CHINA 和 FRANCE 的货币符号用“?”表示。但是对于 INDIA 和 US,会显示正确的符号。
我现在正在解决这个问题。因此,任何线索都会有所帮助。
这是我的代码:
import java.util.Scanner;
import java.text.NumberFormat;
import java.util.Locale;
public class Solution {
public static void main(String[] args) {
/* Read input */
Scanner scanner = new Scanner(System.in);
double payment = scanner.nextDouble();
scanner.close();
/* Create custom Locale for India.
Locale indiaLocale = new Locale("en", "IN");
/* Create NumberFormats using Locales */
NumberFormat us = NumberFormat.getCurrencyInstance(Locale.US);
NumberFormat india = NumberFormat.getCurrencyInstance(indiaLocale);
NumberFormat china = NumberFormat.getCurrencyInstance(Locale.CHINA);
NumberFormat france = NumberFormat.getCurrencyInstance(Locale.FRANCE);
/* Print output */
System.out.println("US: " + us.format(payment));
System.out.println("India: " + india.format(payment));
System.out.println("China: " + china.format(payment));
System.out.println("France: " + france.format(payment));
}
}
我机器上对应的输出是:
12324.134
US: $12,324.13
India: Rs.12,324.13
China: ?12,324.13
France: 12 324,13 ?
【问题讨论】:
-
那么你要打印到什么地方?它不使用什么?
-
问题可能是您的输出设备未正确配置为显示€符号和中国正确使用的任何内容。或者可能根本无法做到这一点。
-
我无法复制。在我的 Java 1.8.0_91 上,我得到
¥12,324.13代表中国和12 324,13 €代表法国。 -
看看这个,类似的问题-stackoverflow.com/questions/4967430/…
标签: java java-8 locale number-formatting