我想在Java中打印一个没有指数形式的双值。

double dexp = 12345678;
System.out.println("dexp: "+dexp);

它显示了这个E符号:1.2345678E7。

我希望它像这样打印:12345678

预防这种情况的最好方法是什么?


当前回答

只要你的号码是整数,这个方法就有效:

double dnexp = 12345678;
System.out.println("dexp: " + (long)dexp);

如果双精度变量在小数点后有精度,它将截断它。

其他回答

我的解决方案: 字符串str =字符串。格式(“%。0 f”,yourDouble);

我认为每个人的想法都是正确的,但并非所有的答案都是直截了当的。 我认为这是一段非常有用的代码。下面是一些可行的方法:

System.out.println(String.format("%.8f", EnterYourDoubleVariableHere));

”。“8”是您设置要显示的小数点后数位的位置。

我正在使用Eclipse,它工作没有问题。

希望这对你有帮助。我将感激任何反馈!

转换科学符号的好方法

String.valueOf (YourDoubleValue.longValue ())

你可以使用printf()与%f:

double dexp = 12345678;
System.out.printf("dexp: %f\n", dexp);

这将打印出dexp: 12345678.000000。如果你不想要小数部分,就用

System.out.printf("dexp: %.0f\n", dexp);

0在%。0f表示小数部分有0个位置,即没有小数部分。如果你想打印所需小数位数的小数部分,那么只需提供像%.8f这样的数字,而不是0。默认情况下,小数部分打印到小数点后6位。

这使用文档中解释的格式说明符语言。

在原始代码中使用的默认toString()格式在这里详细说明。

下面的代码检测所提供的数字是否以科学计数法表示。如果是这样,则在正常表示中使用最多“25”位数表示。

 static String convertFromScientificNotation(double number) {
    // Check if in scientific notation
    if (String.valueOf(number).toLowerCase().contains("e")) {
        System.out.println("The scientific notation number'"
                + number
                + "' detected, it will be converted to normal representation with 25 maximum fraction digits.");
        NumberFormat formatter = new DecimalFormat();
        formatter.setMaximumFractionDigits(25);
        return formatter.format(number);
    } else
        return String.valueOf(number);
}