【问题标题】:How to insert commas into a number?如何在数字中插入逗号?
【发布时间】:2023-03-11 15:29:01
【问题描述】:

我在一本书中找到了这样一个使用String.format()的例子:

package stringFormat;

public class Main {
    public static void main(String[] args) {
        String test = String.format("%, d", 1000000000);
        System.out.println(test);
    } 
}

根据本书的输出应该是:1,000,000,000。但是当我运行代码时,我只得到1 000 000 000 没有逗号。为什么?我怎样才能用逗号得到它?

【问题讨论】:

  • 它在我身边很好用
  • 您的输出因您的语言环境而异。如果您在调用format 之前放置Locale.setDefault(Locale.US);,则输出将与书的输出相匹配。似乎您的操作系统具有类似法语的数字格式规则。
  • @ernest_k 非常感谢!这完美地回答了我的问题!
  • 这本书至少应该提到String.format 是区域敏感的,实际输出可能会有所不同。

标签: java number-formatting


【解决方案1】:

Locale.FRANCE复现问题:

Locale.setDefault(Locale.FRANCE);

String test = String.format("%, d", 1000000000);
System.out.println(test); //  1 000 000 000

你可以通过Locale.US避免这种情况:

String test = String.format(Locale.US, "%, d", 1000000000);

or

Locale.setDefault(Locale.US);
String test = String.format("%, d", 1000000000);

【讨论】:

  • 但是这个例子呢?那是完全错误的吗?为什么它不起作用?
  • @CuteShark 查看 ernest_k 的评论。
  • 是的,我已经检查过了,它可以工作。所以现在我对这个问题没有任何疑问:)
【解决方案2】:

您可以在以下链接中阅读有关 Java 格式的信息: https://docs.oracle.com/javase/tutorial/java/data/numberformat.html

对于您的问题,您可以修复:

public static void main(String[] args) {

   String s = "1000000000";

   System.out.format("%,"+s.length()+"d%n", Long.parseLong(s));

}

希望对您有所帮助!

【讨论】:

    猜你喜欢
    • 2010-10-17
    • 1970-01-01
    • 1970-01-01
    • 2011-08-20
    • 1970-01-01
    • 2020-11-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多