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
非常感谢帮助
你拥有的字符串被解释为整数,因为它们中没有任何类型的小数分隔符(依赖于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,因为这会保留精度,而浮点数可能会失去精度.
| 归档时间: |
|
| 查看次数: |
6958 次 |
| 最近记录: |