[英]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.