将String Number转换为Double,然后在Java中更正格式

top*_*at3 1 java format numbers

好的,所以我一直在搜索2个小时,请在跳转到标记之前重复一下,看一下这个问题.

我有许多包含数字的字符串

数字都是这样的

String one = 611960;
String two = 64850;
String three = 0;
String four = 636;
Run Code Online (Sandbox Code Playgroud)

我希望能够以正确的格式提供这些格式

6,119.60 648.50 0.00 6.36

我试过了

DecimalFormat df = new DecimalFormat("#,###,###,##0.00");
Run Code Online (Sandbox Code Playgroud)

并将String转换为double

double amount = Double.parseDouble(one);
Run Code Online (Sandbox Code Playgroud)

这似乎给611960.0

那我呢

String gfeeOne = df.format(amount);
Run Code Online (Sandbox Code Playgroud)

而这反过来给611,960.00

所以在这个阶段我有点失落.这应该是直截了当的,也许我迷路了.我希望涵盖所有案例,例如1000000000例如1,000,000,000.00

非常感谢帮助

ppe*_*rka 8

你拥有的字符串被解释为整数,因为它们中没有任何类型的小数分隔符(依赖于Locale,请注意这一点......).因此,您基本上只需要将数字除以100,或者换句话说,将小数点向左移动两位.

你应该试试:

double amount = Double.parseDouble(one)/100.0;
Run Code Online (Sandbox Code Playgroud)

或者,更好的是,您可以摆脱基本浮点舍入问题,并使用BigDecimal:

BigDecimal amount = new BigDecimal(one).movePointLeft(2);
String gfeeOne = df.format(amount);
Run Code Online (Sandbox Code Playgroud)

警告如果考虑非常大的值,请务必使用BigDecimal,因为这会保留精度,而浮点数可能会失去精度.