报告对接受 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");
}
}