将double转换为string会给出指数值

时间:2016-03-24 06:14:22

标签: java

我正在尝试将字符串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()));

如何以与我给出的相同格式显示大号?

2 个答案:

答案 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()));