1

好的,所以我已经为此搜索了 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");

并将字符串转换为双精度,例如

double amount = Double.parseDouble(one);

这似乎给了 611960.0

然后我做

String gfeeOne = df.format(amount);

这反过来又给出了 611,960.00

所以在这个阶段我有点迷茫。这应该很简单,也许我迷路了。我想涵盖所有情况,例如 1000000000 例如 1,000,000,000.00

非常感谢帮助

4

2 回答 2

8

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

你应该试试:

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

或者,更好的是,您可以将自己从基本浮点舍入问题中解脱出来,并使用BigDecimal

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

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

于 2012-12-19T15:27:06.477 回答
3

您还可以使用 String.Format:

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

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

于 2012-12-19T15:34:35.800 回答