如何在没有科学记数法的情况下将String转换为BigDecimal

Nat*_*Nat 2 java

我试图将String值转换为BigDecimal值.当我使用0.000001234时,我在BigDecimal中得到相同的值.但是,当我使用0.000000123或0.000000012时,我得到的是1.23E-7或1.2E-8.

如果输入为String = 0.000000123,我需要如下所示

然后输出应该是,BigDecimal = 0.000000123

请帮我

import java.math.BigDecimal;

public class DecimalEx {


        public static void main(String args[]){

            String s = "0.000000023";
            BigDecimal big = new BigDecimal(s);         
            System.out.println(big);
        }
}
Run Code Online (Sandbox Code Playgroud)

Jon*_*eet 5

你没有问题就把它转换String成了a BigDecimal.该BigDecimal值没有关于值是否具有指数表示法的概念......它只是一个缩放值.

您所看到的问题是当您隐式调用时BigDecimal.toString(),有时会记录为使用指数表示法:

如果比例大于或等于零且调整后的指数大于或等于-6,则数字将转换为字符形式,而不使用指数表示法.

相反,你想使用BigDecimal.toPlainString():

返回此BigDecimal的字符串表示形式,不带指数字段.

只需将最后一行代码更改为:

System.out.println(big.toPlainString());
Run Code Online (Sandbox Code Playgroud)