将双精度转换为大十进制并设置大十进制精度
在Java中,我想取一个双精度值并将其转换为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
-.000012
-1.2E-4
我希望BigDecimal始终具有两个这样的精度单位:“47.48”。BigDecimal可以限制转换为字符串的精度吗?