如何格式化字符串编号以使用逗号和圆形?

时间:2010-09-08 23:38:21

标签: java string numbers decimal number-formatting

格式化以下作为字符串给我的数字的最佳方法是什么?

String number = "1000500000.574" //assume my value will always be a String

我希望这是一个值为1,000,500,000.57

的字符串

我如何将其格式化?

10 个答案:

答案 0 :(得分:229)

您可能希望查看DecimalFormat课程;它支持不同的语言环境(例如:在某些国家/地区,将被格式化为1.000.500.000,57)。

您还需要将该字符串转换为数字,这可以通过以下方式完成:

double amount = Double.parseDouble(number);

代码示例:

String number = "1000500000.574";
double amount = Double.parseDouble(number);
DecimalFormat formatter = new DecimalFormat("#,###.00");

System.out.println(formatter.format(amount));

答案 1 :(得分:35)

将String转换为数字后,可以使用

// format the number for the default locale
NumberFormat.getInstance().format(num)

// format the number for a particular locale
NumberFormat.getInstance(locale).format(num)

答案 2 :(得分:34)

这也可以使用String.format()来完成,如果您在一个字符串中格式化多个数字,这可能更容易和/或更灵活。

    String number = "1000500000.574";
    Double numParsed = Double.parseDouble(number);

    System.out.println(String.format("The input number is: %,.2f", numParsed));
    // Or
    String numString = String.format("%,.2f", numParsed);

格式字符串"%,。2f" - ","表示用逗号分隔数字组," .2"意味着在小数点后四舍五入。

有关其他格式选项的参考,请参阅https://docs.oracle.com/javase/tutorial/java/data/numberformat.html

答案 3 :(得分:10)

我已经创建了自己的格式化工具。在处理格式化方面非常快,并为您提供了许多功能:)

它支持:

  • 逗号格式化例如1234567变为1,234,567。
  • 以“千(K),百万(M),十亿(B),万亿(T)”作为前缀。
  • 0至15的精度。
  • 精确重新调整大小(表示如果你想要6位精度,但只有3个可用数字,则强制它为3)。
  • 前缀降低(意味着如果您选择的前缀太大,则会将其降低为更合适的前缀)。

可以找到代码here。你这样称呼它:

public static void main(String[])
{
   int settings = ValueFormat.COMMAS | ValueFormat.PRECISION(2) | ValueFormat.MILLIONS;
   String formatted = ValueFormat.format(1234567, settings);
}

我还应该指出这不处理小数支持,但对整数值非常有用。上面的例子将显示“1.23M”作为输出。我可能可能添加十进制支持,但是没有看到太多使用它从那以后我可能将它合并到一个BigInteger类型的类中,它处理用于数学计算的压缩char []数组。

答案 4 :(得分:6)

public void convert(int s)
{
    System.out.println(NumberFormat.getNumberInstance(Locale.US).format(s));
}

public static void main(String args[])
{
    LocalEx n=new LocalEx();
    n.convert(10000);
}

答案 5 :(得分:6)

鉴于这是Google在format number commas java中获得的第一名,这是一个答案,适用于那些使用整数而不在乎小数的人。

String.format("%,d", 2000000)

输出:

2,000,000

答案 6 :(得分:5)

您也可以使用以下解决方案 -

public static String getRoundOffValue(double value){

        DecimalFormat df = new DecimalFormat("##,##,##,##,##,##,##0.00");
        return df.format(value);
}

答案 7 :(得分:3)

您可以使用以下代码在一行中执行整个转换:

String number = "1000500000.574";
String convertedString = new DecimalFormat("#,###.##").format(Double.parseDouble(number));

DecimalFormat构造函数中的最后两个#符号也可以是0。无论哪种方式都有效。

答案 8 :(得分:3)

这是到达目的地的最简单方法:

String number = "10987655.876";
double result = Double.parseDouble(number);
System.out.println(String.format("%,.2f",result)); 

输出: 10,987,655.88

答案 9 :(得分:2)

第一个答案非常有效,但对于ZERO / 0,它的格式为.00

因此格式#,## 0.00对我来说效果很好。 在部署到生产系统之前,请务必测试不同的数字,如0/100 / 2334.30和负数。