Heim  >  Artikel  >  Java  >  Eine kurze Diskussion über das Problem der kleinen Abweichung der Java-Doppelmultiplikationsergebnisse

Eine kurze Diskussion über das Problem der kleinen Abweichung der Java-Doppelmultiplikationsergebnisse

高洛峰
高洛峰Original
2017-01-23 16:06:581543Durchsuche

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!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn