| | |
| | | } |
| | | |
| | | /** |
| | | * 比较两个Double值是否相等(处理null值) |
| | | * 比较两个Double值是否相等(处理null值和0值) |
| | | * 重要:null和0被认为是不同的值,需要更新 |
| | | * @param d1 第一个Double值 |
| | | * @param d2 第二个Double值 |
| | | * @return true-相等,false-不相等 |
| | | */ |
| | | private boolean isDoubleEqual(Double d1, Double d2) { |
| | | // 两个都是null,认为相等 |
| | | if (d1 == null && d2 == null) { |
| | | return true; |
| | | } |
| | | // 一个为null,另一个不为null,认为不相等(需要更新) |
| | | // 注意:null和0是不同的,null和0.0会返回false,触发更新 |
| | | if (d1 == null || d2 == null) { |
| | | return false; |
| | | } |
| | | // 使用误差范围比较,避免浮点数精度问题 |
| | | // 两个都不为null,使用误差范围比较,避免浮点数精度问题 |
| | | // 注意:0值会被正确比较,例如:0.0和0.0会返回true,100.0和0.0会返回false |
| | | return Math.abs(d1 - d2) < 0.0001; |
| | | } |
| | | |