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

时间:2012-12-19 15:25:00

标签: java numbers format

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

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

数字将全部像这样

String one = 611960;
String two = 64850;
String three = 0;
String four = 636;

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

6,119.60 648.50 0.00 6.36

我试过了

DecimalFormat df = new DecimalFormat("#,###,###,##0.00");

并将String转换为double,例如

double amount = Double.parseDouble(one);

似乎给了611960.0

然后我做

String gfeeOne = df.format(amount);

反过来给出611,960.00

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

非常感谢

2 个答案:

答案 0 :(得分:8)

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

你应该尝试:

double amount = Double.parseDouble(one)/100.0;

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

BigDecimal amount = new BigDecimal(one).movePointLeft(2);
String gfeeOne = df.format(amount);

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

答案 1 :(得分:3)

您也可以使用String.Format:

String one = String.Format("%,.2f", (double)611960);

(double)会将整数值转换为浮点值。格式字符串%,.2f将浮点数(f)转换为带有两个小数点(.2)的字符串表示形式,并添加分组分隔符(,)。