将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

回到顶部