Sehen Sie sich das laufende Ergebnis des folgenden Codeabschnitts an:
public class TestDouble { public static void main(String[] args) { double d =538.8; System.out.println(d*100); }
Das Ausgabeergebnis ist überraschenderweise nicht 53880, sondern 53879,99999999999
Lösungsmethode 1: Ersetzen Sie
538,8*100 durch *10*10, um das gewünschte Ergebnis zu erhalten. Ersetzen Sie
538,8*10000 durch 100*100.
Lösung 2:
public class TestDouble { public static void main(String[] args) { double d =538.8; BigDecimal a1 = new BigDecimal(Double.toString(d)); BigDecimal b1 = new BigDecimal(Double.toString(100)); BigDecimal result = a1.multiply(b1);// 相乘结果 System.out.println(result); BigDecimal one = new BigDecimal("1"); double a = result.divide(one,2,BigDecimal.ROUND_HALF_UP).doubleValue();//保留1位数 System.out.println(a); } }
Der obige Artikel erörtert kurz das kleine Problem der Abweichung im Ergebnis der Java-Doppelmultiplikation, bei der es sich um den gesamten Inhalt handelt, der von der Java-Doppelmultiplikation geteilt wird Ich hoffe, dass er Ihnen eine Referenz geben kann, und ich hoffe, dass Sie die chinesische PHP-Website unterstützen.
Weitere Artikel zur kleinen Abweichung der Java-Doppelmultiplikationsergebnisse finden Sie auf der chinesischen PHP-Website!