ホームページ  >  記事  >  Java  >  Java の二重乗算結果の微小偏差問題に関する簡単な説明

Java の二重乗算結果の微小偏差問題に関する簡単な説明

高洛峰
高洛峰オリジナル
2017-01-23 16:06:581543ブラウズ

次のコードの実行結果を見てください:

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

出力結果は驚くべきことに 53880 ではなく、53879.99999999999 です

解決策 1:

538.8*100 を *10*10 に置き換えると、何を取得できますか

の結果は、538.8*10000を100*100に置き換えることです。

解決策 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);
  }
}

上記の記事は、Java の二重乗算の結果の偏差に関する小さな問題について簡単に説明しています。これはすべて、編集者によって共有された内容であり、参考になれば幸いです。皆さんもPHP中国語ネットを応援していただければ幸いです。

Java の二重乗算結果の小さな偏差に関するその他の記事については、PHP 中国語 Web サイトに注目してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。