fix double equals

This commit is contained in:
Looly 2020-09-08 09:46:14 +08:00
parent 56917f5295
commit 4d7b795505
3 changed files with 16 additions and 4 deletions

View File

@ -23,6 +23,7 @@
* 【poi 】 修复ExcelFileUtil.isXls判断问题pr#1055@Github
* 【poi 】 修复CglibUtil.copyList参数错误导致的问题
* 【http 】 修复GET请求附带body导致变POST的问题
* 【core 】 修复double相等判断问题pr#175@Gitee
-------------------------------------------------------------------------------------------------------------

View File

@ -37,7 +37,6 @@ import java.io.File;
import java.io.InputStream;
import java.io.OutputStream;
import java.io.Serializable;
import java.math.BigDecimal;
import java.net.URL;
import java.nio.file.Path;
@ -304,9 +303,7 @@ public class Img implements Serializable {
double widthRatio = NumberUtil.div(width, srcWidth);
// 浮点数之间的等值判断,基本数据类型不能用==比较,包装数据类型不能用equals来判断
BigDecimal heightRatioBigDecimal = new BigDecimal(heightRatio);
BigDecimal widthRatioBigDecimal = new BigDecimal(widthRatio);
if (heightRatioBigDecimal.compareTo(widthRatioBigDecimal) == 0) {
if (NumberUtil.equals(heightRatio, widthRatio)) {
// 长宽都按照相同比例缩放时返回缩放后的图片
scale(width, height);
} else if (widthRatio < heightRatio) {

View File

@ -1688,6 +1688,20 @@ public class NumberUtil {
return bigNum1.compareTo(bigNum2) <= 0;
}
/**
* 比较大小值相等 返回true<br>
* 此方法通过调用{@link BigDecimal#compareTo(BigDecimal)}方法来判断是否相等<br>
* 此方法判断值相等时忽略精度的即0.00 == 0
*
* @param num1 数字1
* @param num2 数字2
* @return 是否相等
* @since 5.4.2
*/
public static boolean equals(double num1, double num2) {
return equals(toBigDecimal(num1), toBigDecimal(num2));
}
/**
* 比较大小值相等 返回true<br>
* 此方法通过调用{@link BigDecimal#compareTo(BigDecimal)}方法来判断是否相等<br>