在Java中,我想要一个双BigDecimal精度值并将其转换为a 并以一定的精度打印出它的String值。
BigDecimal
import java.math.BigDecimal; public class Main { public static void main(String[] args) { double d=-.00012; System.out.println(d+""); //This prints -1.2E-4 double c=47.48000; BigDecimal b = new BigDecimal(c); System.out.println(b.toString()); //This prints 47.47999999999999687361196265555918216705322265625 } }
它打印出这个巨大的东西:
47.47999999999999687361196265555918216705322265625
并不是
47.48
我进行BigDecimal转换的原因是有时double值将包含很多小数位(即-.000012),而将double转换为String时将产生科学计数法-1.2E-4。我想以非科学计数法存储String值。
-.000012
-1.2E-4
我希望BigDecimal总是这样具有两个精度单位:“ 47.48”。BigDecimal可以限制转换为字符串时的精度吗?
如果您使用另一个MathContext,它将显示47.48000 :
BigDecimal b = new BigDecimal(d, MathContext.DECIMAL64);
只需选择所需的上下文即可。