将科学记数法格式的字符串字符转换为标准记数法

时间:2021-01-17 18:22:27

标签: java android double number-formatting

我有一个由一些计算生成的用户字符串。用户字符串是“3.2E7” 它是用科学记数法编写的。我需要将其转换为标准符号,因为 如果读取的是科学记数法编号,则 App 上的绘图说明会重叠。

我知道如何使用 Number 类将其转换为标准表示法,如下所示:

String generated = "3.2E7"
try{
  NumberFormat format = NumberFormat.getInstance();
  Number my_number = format.parse(generated);
  System.out.println("see my number: " + my_number); //this prints correctly: 32000000


 }catch(Exception exception){
   Log.d("see009",""+exception);
  }

现在,我遇到的问题是,如果变量“生成”<1 但大于零。然后,NumberFormat 类不能正确转换它:

String generated = "3.2E-7";
//inside the try catch block from above:
System.out.println("see my number: " + my_number); //this prints 3.2E-7  NOT: 0.00000032

Number 类不接受非整数如何将 NumberFormat 对象格式化为小于 1 的科学记数法数字?

1 个答案:

答案 0 :(得分:0)

使用 BigDecimal 类我已经能够克服这个问题:

只需这样做:

String generated = "3.2E7";
BigDecimal big_decimal = new BigDecimal(generated);
System.out.println("look at this: " + big_decimal.toPlainString()); //will print: 32000000

generated = "3.2E-7";
big_decimal = new BigDecimal(generated);
System.out.println("look at this: " + big_decimal.toPlainString()); //will print: 0.00000032

BigDecimal 甚至可以处理 20 级的幂。这是一个非常有效的解决方案,非常适合我的需求。

相关问题