Maison >Java >javaDidacticiel >Une brève discussion sur le problème des petites déviations des résultats de la double multiplication Java

Une brève discussion sur le problème des petites déviations des résultats de la double multiplication Java

高洛峰
高洛峰original
2017-01-23 16:06:581661parcourir

Regardez le résultat d'exécution du morceau de code suivant :

public class TestDouble {
 
public static void main(String[] args) {
 
double d =538.8;
 
System.out.println(d*100);
 
}

Le résultat de sortie n'est étonnamment pas 53880 mais 53879.99999999999

Méthode de solution 1 : Remplacez

538,8*100 par *10*10 pour obtenir le résultat souhaité. Remplacez

538,8*10000 par 100*100.

Solution 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);
  }
}

L'article ci-dessus aborde brièvement le petit problème de déviation dans le résultat de la double multiplication Java, qui est tout le contenu partagé par le éditeur. J'espère qu'il pourra vous donner une référence et j'espère que vous soutiendrez le site Web PHP chinois.

Pour plus d'articles sur la petite déviation des résultats de double multiplication Java, veuillez faire attention au site Web PHP chinois !

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn