将double转换为BigDecimal并设置BigDecimal精度
在Java中,我想要一个双BigDecimal
精度值并将其转换为a 并以一定的精度打印出它的String值。
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值。
我希望BigDecimal总是这样具有两个精度单位:“ 47.48”。BigDecimal可以限制转换为字符串时的精度吗?
回答:
如果您使用另一个MathContext,它将显示47.48000
:
BigDecimal b = new BigDecimal(d, MathContext.DECIMAL64);
只需选择所需的上下文即可。
以上是 将double转换为BigDecimal并设置BigDecimal精度 的全部内容, 来源链接: utcz.com/qa/405940.html