格式化以下以字符串形式提供给我的数字的最佳方法是什么?
String number = "1000500000.574" //assume my value will always be a String
我希望这是一个具有以下值的字符串: 1,000,500,000.57
我该如何格式化?
格式化以下以字符串形式提供给我的数字的最佳方法是什么?
String number = "1000500000.574" //assume my value will always be a String
我希望这是一个具有以下值的字符串: 1,000,500,000.57
我该如何格式化?
Answers:
您可能要看一下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));
这也可以使用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
将String转换为数字后,即可使用
// format the number for the default locale
NumberFormat.getInstance().format(num)
要么
// format the number for a particular locale
NumberFormat.getInstance(locale).format(num)
new DecimalFormat("0.##", DecimalFormatSymbols.getInstance(locale))
我创建了自己的格式化实用程序。它在处理格式方面非常快,并为您提供了许多功能:)
它支持:
该代码可以在这里找到。您这样称呼它:
public static void main(String[])
{
int settings = ValueFormat.COMMAS | ValueFormat.PRECISION(2) | ValueFormat.MILLIONS;
String formatted = ValueFormat.format(1234567, settings);
}
我还应该指出,这不能处理十进制支持,但对于整数值非常有用。上面的示例将显示“ 1.23M”作为输出。我也许可以添加十进制支持,但是没有看到太多的用途,因为那之后我最好将其合并为BigInteger类型的类,该类处理用于数学计算的压缩char []数组。
K
或M
意思
您也可以使用以下解决方案-
public static String getRoundOffValue(double value){
DecimalFormat df = new DecimalFormat("##,##,##,##,##,##,##0.00");
return df.format(value);
}