diff --git a/CHANGELOG.md b/CHANGELOG.md
index fc43bb035..4ea97adad 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -23,6 +23,7 @@
* 【poi 】 修复ExcelFileUtil.isXls判断问题(pr#1055@Github)
* 【poi 】 修复CglibUtil.copyList参数错误导致的问题
* 【http 】 修复GET请求附带body导致变POST的问题
+* 【core 】 修复double相等判断问题(pr#175@Gitee)
-------------------------------------------------------------------------------------------------------------
diff --git a/hutool-core/src/main/java/cn/hutool/core/img/Img.java b/hutool-core/src/main/java/cn/hutool/core/img/Img.java
index c2d4fb67c..e16dcf790 100644
--- a/hutool-core/src/main/java/cn/hutool/core/img/Img.java
+++ b/hutool-core/src/main/java/cn/hutool/core/img/Img.java
@@ -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) {
diff --git a/hutool-core/src/main/java/cn/hutool/core/util/NumberUtil.java b/hutool-core/src/main/java/cn/hutool/core/util/NumberUtil.java
index 01fefa015..3de02fa59 100644
--- a/hutool-core/src/main/java/cn/hutool/core/util/NumberUtil.java
+++ b/hutool-core/src/main/java/cn/hutool/core/util/NumberUtil.java
@@ -1688,6 +1688,20 @@ public class NumberUtil {
return bigNum1.compareTo(bigNum2) <= 0;
}
+ /**
+ * 比较大小,值相等 返回true
+ * 此方法通过调用{@link BigDecimal#compareTo(BigDecimal)}方法来判断是否相等
+ * 此方法判断值相等时忽略精度的,即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
* 此方法通过调用{@link BigDecimal#compareTo(BigDecimal)}方法来判断是否相等