繁体   English   中英

将字符串数字转换为Double,然后在Java中更正格式

[英]Convert String Number to Double and then correct format in Java

好的,所以我一直在搜索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

非常感谢帮助

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

你应该试试:

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

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

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

如果考虑到非常大的值,请发出警告 ,请确保使用BigDecimal ,因为它可以保留精度,而浮点数可能会失去精度。

您还可以使用String.Format:

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM