java">public static void main(String[] args) {double a = 413;double b = 0.4;double c = 165.2;System.out.println("a*b = " + a*b);System.out.println("a*b > c 的结果是:" + (a*b > c));}
输出:
a*b = 165.20000000000002
a*b > c 的结果是:true
发现不可以这样比较。做法如下
java">public static void main(String[] args) {double a = 413;double b = 0.4;double c = 165.2;BigDecimal aa = new BigDecimal(Double.toString(a));BigDecimal bb = new BigDecimal(Double.toString(b));BigDecimal cc = new BigDecimal(Double.toString(c));BigDecimal ratingPower04 = aa.multiply(bb).setScale(4, BigDecimal.ROUND_HALF_UP);System.out.println("a*b = " + ratingPower04);System.out.println("a*b > c 的结果是:" + (ratingPower04.compareTo(cc) > 0));
}
结果是:
a*b = 165.2000
a*b > c 的结果是:false
这里附上函数
java">/**** @param ratingPower 发动机额定功率* @param maxPower 轮边功率修正值* @return*/public static int isBig(Double ratingPower,Double maxPower){BigDecimal aa = new BigDecimal(Double.toString(ratingPower));BigDecimal bb = new BigDecimal(Double.toString(maxPower));BigDecimal cc = new BigDecimal(Double.toString( 0.4));BigDecimal ratingPower04 = aa.multiply(cc).setScale(4, BigDecimal.ROUND_HALF_UP);return ratingPower04.compareTo(bb);}