我正在尝试将字符串32,646,513.32
转换为double,然后将其转换为科学记数法中的字符串,如3.264651332E7
。以下代码是
double amount = 0;
for (Payments payments : pvor.getPayments()) {
payments.setDocumentNumber(pvor);
amount += Double.parseDouble(payments.getAmount());
payments.setDate(new Date());
}
DecimalFormat df = new DecimalFormat("#.00");
double totalAMount = Double.valueOf(df.format(amount));
Double totalAMounts = (Double) totalAMount;
pvor.setAmount(String.valueOf(totalAMounts.doubleValue()));
如何以与我给出的相同格式显示大号?
答案 0 :(得分:2)
您需要格式化double值以匹配所需的字符串格式,而不是仅使用String.valueOf(totalAmounts)
(以指数格式提供数字)。尝试类似new DecimalFormat("#,###.00").format(totalAmounts)
的内容。或者只使用String.format("%,.2f", totalAMounts)
。
答案 1 :(得分:1)
如果我正确理解了您的问题,那么您不需要String.valueOf()
,只需String.format()
。
以下是代码段:
public static void main (String[] args) throws Exception
{
String input = "32,646,513.32";
double value = Double.parseDouble(input.replace(",",""));
String output = String.format("%f",value);
System.out.println("Value: " + output);
}
输出:
Value: 32646513.320000
正确替换代码中的以下行:
/* Note the change from `valueOf()` to `format()` */
pvor.setAmount(String.format("%f",totalAMounts.doubleValue()));