double 值的 BigDecimal 构造函数的调用。
这些构造函数生成正好等于提供的 double 值的 BigDecimal。
但是,由于 double 是以 IEEE 754 64 位双精度二进制浮点格式进行编码,确切值可能出乎意料。
例如,new BigDecimal(0.1) 会生成一个 BigDecimal 对象。 它的值为 0.1000000000000000055511151231257827021181583404541015625,这是最接近 0.1 的数字,可以表示为 double。
要获取存储的值与源代码中编写的值相同的 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");
}
}