代码之家  ›  专栏  ›  技术社区  ›  erotsppa

在Java中如何将字符串3.0103E-7转换为0.00000030103?

  •  0
  • erotsppa  · 技术社区  · 15 年前

    在Java中如何将字符串0E-11转换为0?我想用非科学符号显示这个数字。我已经尝试过用Java中的数字格式化程序,但是我需要指定我想要的小数的确切数目,但我不总是知道。我只想知道我原来的数字所代表的小数位数。

    5 回复  |  直到 8 年前
        1
  •  3
  •   Eugene Ryzhikov    15 年前

    我将使用bigdecimal。将字符串作为参数传递给它,然后使用string.format来表示新创建的bigdecimal,而不使用科学记数法。 也可以使用float或double类。

        2
  •  9
  •   erotsppa    15 年前

    显然,正确的答案是使用bigdecimal并检索精度和小数位数。然后在格式化程序中使用这些数字。类似的事情:

    BigDecimal bg = new BigDecimal(rs.getString(i));
    Formatter fmt = new Formatter();
    fmt.format("%." + bg.scale() + "f", bg);
    buf.append( fmt);
    
        3
  •  3
  •   BullyWiiPlaza    8 年前

    使用 BigDecimal :

    public static String removeScientificNotation(String value)
    {
        return new BigDecimal(value).toPlainString();
    }
    
    public static void main(String[] arguments) throws Exception
    {
        System.out.println(removeScientificNotation("3.0103E-7"));
    }
    

    印刷品:

    0.00000030103
    
        4
  •  2
  •   Massimo    9 年前
    double d = Double.parseDouble("7.399999999999985E-5");
    NumberFormat formatter = new DecimalFormat("###.#####");
    String f = formatter.format(d);
    System.out.println(f);    // output --> 0.00007
    
        5
  •  0
  •   Powerlord    15 年前

    我没试过,但是 java.text.NumberFormat 可以做你想做的。