在Java中,我想採用double值並將其轉換爲BigDecimal
,並將其值以特定精度打印出來。將double轉換爲BigDecimal並設置BigDecimal Precision
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
)以及何時將double轉換爲String將產生科學記數法-1.2E-4
。我想以非科學記數法存儲字符串值。
我想讓BigDecimal總是有兩個精度單位:「47.48」。 BigDecimal是否可以限制轉換爲字符串的精度?
BigDecimal b = new BigDecimal(d, MathContext.DECIMAL64);
只需選擇您需要的情況下:
注:BigDecimal的也有時會使用科學記數法(相信對於數<10^-6) – assylias