将以下数字格式化为字符串的最佳方法是什么?
String number = "1000500000.574" //assume my value will always be a String
我希望它是一个字符串,值为: 1,000,500,000.57 我如何将其格式化?
1,000,500,000.57
cwtwac6a1#
您也可以使用下面的解决方案-
public static String getRoundOffValue(double value){ DecimalFormat df = new DecimalFormat("##,##,##,##,##,##,##0.00"); return df.format(value); }
fcy6dtqo2#
您可以使用以下代码在一行中完成整个转换:
String number = "1000500000.574"; String convertedString = new DecimalFormat("#,###.##").format(Double.parseDouble(number));
decimalformat构造函数中的最后两个#符号也可以是0。不管哪种方法都管用。
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[]数组。
nzkunb0c4#
第一个答案非常有效,但是对于0/0,它的格式是.00因此格式#,##0.00对我来说很好。在部署到生产系统之前,始终测试不同的数字,如0/100/2334.30和负数。
fcwjkofz5#
鉴于这是谷歌的头号搜索结果 format number commas java ,这里有一个答案适用于那些处理整数而不关心小数的人。
format number commas java
String.format("%,d", 2000000)
输出:
2,000,000
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); }
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
velaa5lx8#
你可能想看看 DecimalFormat 班级;它支持不同的语言环境(例如:在某些国家,格式为 1.000.500.000,57 相反)。您还需要将该字符串转换为数字,这可以通过以下方法完成:
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));
pkwftd7m9#
最简单的方法是:
String number = "10987655.876"; double result = Double.parseDouble(number); System.out.println(String.format("%,.2f",result));
输出:10987655.88
r8uurelv10#
将字符串转换为数字后,可以使用
// format the number for the default locale NumberFormat.getInstance().format(num)
或
// format the number for a particular locale NumberFormat.getInstance(locale).format(num)
10条答案
按热度按时间cwtwac6a1#
您也可以使用下面的解决方案-
fcy6dtqo2#
您可以使用以下代码在一行中完成整个转换:
decimalformat构造函数中的最后两个#符号也可以是0。不管哪种方法都管用。
0yycz8jy3#
我已经创建了自己的格式化工具。它在处理格式时速度极快,同时提供了许多功能:)
它支持:
逗号格式(例如1234567)变为1234567。
前缀为“千(k)、百万(m)、十亿(b)、万亿(t)”。
精度为0到15。
精度重新调整大小(意味着如果您想要6位精度,但只有3位可用数字,它将强制调整为3位)。
前缀降低(意味着如果您选择的前缀太大,它会降低到一个更合适的前缀)。
代码可以在这里找到。你这样称呼它:
我还应该指出,这不处理十进制支持,但对于整数值非常有用。上面的示例将显示“1.23m”作为输出。我可能会添加decimal支持,但没有看到太多的用处,因为从那时起,我不妨将它合并到一个biginteger类型的类中,该类处理用于数学计算的压缩char[]数组。
nzkunb0c4#
第一个答案非常有效,但是对于0/0,它的格式是.00
因此格式#,##0.00对我来说很好。在部署到生产系统之前,始终测试不同的数字,如0/100/2334.30和负数。
fcwjkofz5#
鉴于这是谷歌的头号搜索结果
format number commas java
,这里有一个答案适用于那些处理整数而不关心小数的人。输出:
cetgtptt6#
cvxl0en27#
这也可以通过使用string.format()来实现,如果您在一个字符串中格式化多个数字,这可能会更容易和/或更灵活。
对于格式字符串“%,.2f”-“,”表示带逗号的独立数字组,“.2”表示小数点后的两位四舍五入。
有关其他格式选项的参考,请参见https://docs.oracle.com/javase/tutorial/java/data/numberformat.html
velaa5lx8#
你可能想看看
DecimalFormat
班级;它支持不同的语言环境(例如:在某些国家,格式为1.000.500.000,57
相反)。您还需要将该字符串转换为数字,这可以通过以下方法完成:
代码示例:
pkwftd7m9#
最简单的方法是:
输出:10987655.88
r8uurelv10#
将字符串转换为数字后,可以使用
或