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

ero*_*ppa 2 java formatting numbers

如何在Java中将字符串0E-11转换为0.00000000000?我想以非科学记数法显示数字.我已经尝试过查看Java中的数字格式化程序,但是我需要具体说明我想要的确切小数位数,但我不会总是知道.我只想要原始数字所指定的小数位数.

ero*_*ppa 9

显然,正确的答案是用户BigDecimal并检索精度和比例数.然后在Formatter中使用这些数字.像这样的东西:

BigDecimal bg = new BigDecimal(rs.getString(i));
Formatter fmt = new Formatter();
fmt.format("%." + bg.scale() + "f", bg);
buf.append( fmt);
Run Code Online (Sandbox Code Playgroud)

  • 是的,尤金,但魔鬼在细节中; 工作示例代码通常比描述更有帮助.例如,有人建议我在存储过程中使用EXEC(在Oracle 10g中).这个想法是正确的(使用存储过程而不是函数),但细节(CALL与EXEC)是错误的.正如Torvalds曾经说过的那样,"给我看一下代码." http://lkml.org/lkml/2000/8/25/132 (3认同)

Bul*_*aza 6

使用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"));
}
Run Code Online (Sandbox Code Playgroud)

印刷品:

0.00000030103
Run Code Online (Sandbox Code Playgroud)