我想根据所需的区域设置格式化数字。所以,我正在使用PHP手册中的示例代码:
public static void main(String[] args) {
int numOfCases = 0, numOfSteps = 0, num = 0;
ArrayList<Integer> indexOfOdd = new ArrayList<Integer>();
String input = "";
in = new Scanner(System.in);
numOfCases = in.nextInt();
for (int i = 1; i <= numOfCases; i++) {
input = in.next();
for (int j = 0; j < input.length(); j++) {
num = Integer.parseInt(input.substring(j, j + 1));
if (num % 2 != 0) {
indexOfOdd.add(j);
}
System.out.println(indexOfOdd);
}
numOfSteps = indexOfOdd.size();
indexOfOdd.clear();
System.out.println("Case #" + i + ": " + numOfSteps);
}
}
而不是预期的结果,我只得到未格式化的值“1234.56”。如果我使用不同的语言环境,例如'it_IT'而不是'en_US',也会发生同样的情况。
为什么不格式?
答案 0 :(得分:1)
因为你的环境中没有en_US
本地人。使用locale -a
进行检查。
您已安装它。请参阅此answer
答案 1 :(得分:0)
PHP手册告诉money_format( string $format , float $number )
函数依赖于strfmon()
C函数。
您可以作为$format
参数传递的可能选项是操作系统的locale
命令可以理解的选项。如果你传递了不同的东西,那么数字根本没有格式化,它只是转换为字符串。这就是发生在我身上的事。
为了列出可接受的值,您可以在提示符下使用此命令:
locale -a
根据您的安装,它可能只列出几个区域设置。要使用更多,您可能需要安装其他语言环境。在Debian中你可以这样做:
apt-get install locales
apt-get install locales-all
安装所有语言环境后,locale -a
命令会列出数百个语言环境。现在number_format()
函数按预期工作。