我有一个由一些计算生成的用户字符串。用户字符串是“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 的科学记数法数字?
答案 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 级的幂。这是一个非常有效的解决方案,非常适合我的需求。