如何将双指数形式转换为普通小数形式

时间:2011-03-22 11:37:06

标签: java

所有专家 我在我的程序中使用double类型的变量做了一些逻辑事情。 当double参数的值小于1,00,00,000时,一切都正常。 但是当它的价值变为>一个Crores它会自动转换为exponetial形式,我有一个例外。

例如

  

值10010001.25成为   1.001000125E7

我希望该值处于正常状态。

任何帮助??

谢谢 Mihir Parekh

3 个答案:

答案 0 :(得分:3)

我建议使用System.out.println(new BigDecimal(d))

以下是一些替代方案的比较:

import java.math.BigDecimal;
import java.text.DecimalFormat;

public class Test {

    public static void main(String[] args) {
        double d = 10010001.125;

        // 10010001.125000 (lots of trailing zeroes)
        System.out.printf("%f%n", d);


        // 10010001.13 (perhaps not what you want)
        System.out.printf("%.2f%n", d);


        // 10010001.12 (not accurate in my opinion)
        DecimalFormat df = new DecimalFormat("#.##");
        System.out.println(df.format(d));


        // 10010001.125 (all relevant digits, and no trailing zeroes)
        System.out.println(new BigDecimal(d));
    }
}

答案 1 :(得分:1)

double是二进制格式。您看到的两种格式是将double转换为String的不同方式。您可以尝试使用DecimalFormat将数字转换为十进制格式的String。

但是你可能会发现这个更简单

double d = 10010001.25;
System.out.printf("%.2f%n", d);

打印

10010001.25

编辑:

System.out.printf("%,.2f%n", d);

打印

10,010,001.25

答案 2 :(得分:0)

您可以使用DecimalFormat

        double d = 10010001.25;
        DecimalFormat df = new DecimalFormat("#.##");
        System.out.print(df.format(d));