如何将字符串编号格式化为逗号和舍入?

nvbavucw  于 2021-06-27  发布在  Java
关注(0)|答案(10)|浏览(287)

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

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

我希望它是一个字符串,值为: 1,000,500,000.57 我如何将其格式化?

cwtwac6a

cwtwac6a1#

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

public static String getRoundOffValue(double value){

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

fcy6dtqo2#

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

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

decimalformat构造函数中的最后两个#符号也可以是0。不管哪种方法都管用。

0yycz8jy

0yycz8jy3#

我已经创建了自己的格式化工具。它在处理格式时速度极快,同时提供了许多功能:)
它支持:
逗号格式(例如1234567)变为1234567。
前缀为“千(k)、百万(m)、十亿(b)、万亿(t)”。
精度为0到15。
精度重新调整大小(意味着如果您想要6位精度,但只有3位可用数字,它将强制调整为3位)。
前缀降低(意味着如果您选择的前缀太大,它会降低到一个更合适的前缀)。
代码可以在这里找到。你这样称呼它:

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

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

nzkunb0c

nzkunb0c4#

第一个答案非常有效,但是对于0/0,它的格式是.00
因此格式#,##0.00对我来说很好。在部署到生产系统之前,始终测试不同的数字,如0/100/2334.30和负数。

fcwjkofz

fcwjkofz5#

鉴于这是谷歌的头号搜索结果 format number commas java ,这里有一个答案适用于那些处理整数而不关心小数的人。

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

输出:

2,000,000
cetgtptt

cetgtptt6#

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);
}
cvxl0en2

cvxl0en27#

这也可以通过使用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

velaa5lx

velaa5lx8#

你可能想看看 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));
pkwftd7m

pkwftd7m9#

最简单的方法是:

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

输出:10987655.88

r8uurelv

r8uurelv10#

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

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

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

相关问题