好的,所以我一直在搜索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
非常感谢
答案 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
)的字符串表示形式,并添加分组分隔符(,
)。