double 值的 BigDecimal 构造函数的调用。
这些构造函数生成的 BigDecimal 与提供的 double 值相等。
但是,由于 double 是以 IEEE 754 64 位双精度二进制浮点格式进行编码,确切值可能出乎意料。
例如,new BigDecimal(0.1) 会产生一个 BigDecimal 对象,值为 0.1000000000000000055511151231257827021181583404541015625,这是以 double 表示最接近 0.1 的数字。
要获得包含期望值 0.1 的BigDecimal,请使用 new BigDecimal("0.1") 或 BigDecimal.valueOf(0.1)。
示例:
class Constructor {
void foo() {
new BigDecimal(0.1);
}
}
在应用快速修复后:
class Constructor {
void foo() {
new BigDecimal("0.1");
}
}