如何防止浮动的科学显示?

时间:2012-03-16 00:03:07

标签: java decimal

我有以下输出

输出= 4.08E-4

输出= 8.9E-5

输出= 0.978461

输出= 0.224577

现在我没有得到的是 4.08E-4 - 我认为它是负指数并且给定< 0它返回true但是有另一种方式以十进制显示格式?

4 个答案:

答案 0 :(得分:2)

您很可能正在尝试使用System.out.println(...)打印float / double。

这最终会调用Float(或Double)的public static String toString()方法。无论哪种方式,如果您阅读Javadoc,它都会声明:

  

如果m小于10-3或大于或等于107,那么它是   以所谓的“计算机化科学记数法”代表。设n是   唯一的整数,使得10n <= m <1。 10N + 1;然后让一个人成为   数学上精确的m和10n的商使得1 <= a <1。 10.   然后将幅度表示为a的整数部分,作为单个   十进制数字,后跟'。' ('\ u002E'),后跟十进制数字   代表a的小数部分,后跟字母'E'   ('\ u0045'),后跟n表示十进制整数,如   由Integer.toString(int)方法生成。

您可以使用System.out.printf()解决此问题,如下所示:

double d = 0.000408;

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

打印:

4.08E-4
0,000408

我的2美分。

答案 1 :(得分:1)

System.out.println(4.08e-4);

0.000408

答案 2 :(得分:1)

我使用NumberFormat类 -

        double d = 0.000408;            
        //For considering 4 digits after decimal place
        NumberFormat nf = NumberFormat.getInstance();
        nf.setMaximumFractionDigits(4);            
        nf.setGroupingUsed(false);

        System.out.println(d);
        System.out.println(nf.format(d));

答案 3 :(得分:0)

我认为你要找的是NumberFormat类或printf函数,任何一个都可以工作。