Browse Source

浮点数之间的等值判断,基本数据类型不能用==比较,包装数据类型不能用equals来判断。

hanshuai 5 years ago
parent
commit
53a7b4bf6c
1 changed files with 5 additions and 1 deletions
  1. 5 1
      hutool-core/src/main/java/cn/hutool/core/img/Img.java

+ 5 - 1
hutool-core/src/main/java/cn/hutool/core/img/Img.java

@@ -37,6 +37,7 @@ 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;
 
@@ -302,7 +303,10 @@ public class Img implements Serializable {
 		double heightRatio = NumberUtil.div(height, srcHeight);
 		double widthRatio = NumberUtil.div(width, srcWidth);
 
-		if (widthRatio == heightRatio) {
+		// 浮点数之间的等值判断,基本数据类型不能用==比较,包装数据类型不能用equals来判断。
+		BigDecimal heightRatioBigDecimal = new BigDecimal(heightRatio);
+		BigDecimal widthRatioBigDecimal = new BigDecimal(widthRatio);
+		if (heightRatioBigDecimal.compareTo(widthRatioBigDecimal) == 0) {
 			// 长宽都按照相同比例缩放时,返回缩放后的图片
 			scale(width, height);
 		} else if (widthRatio < heightRatio) {