最佳答案
在 Java 中,我希望获取一个双精度值,并将其转换为 BigDecimal
,然后将其 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.4799999999999996873611962655591821670532265625
而不是
47.48
我之所以要进行 BigDecimal
转换,是因为有时候双精度值会包含很多小数位(比如 -.000012
) ,而且当把双精度值转换成字符串时,会产生科学记数法为 -1.2E-4
的值。我想用非科学符号存储 String 值。
我希望 BigDecimal 总是有两个这样的精度单位: “47.48”。BigDecimal 可以限制转换为字符串时的精度吗?