【发布时间】:2012-09-05 21:25:41
【问题描述】:
在 Java 中,我想获取一个双精度值并将其转换为 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 可以限制转换为字符串的精度吗?
【问题讨论】:
-
注意:BigDecimal 有时也会使用科学记数法(我相信数字
标签: java double bigdecimal