• ベストアンサー

double型の精度

static doubleで配列を作り 0.3454703165とセットして 宣言しました。 しかし、実行してウォッチで見ると 0.345470316499999になってしまいます。 なぜでしょうか?

質問者が選んだベストアンサー

  • ベストアンサー
  • ymmasayan
  • ベストアンサー率30% (2593/8599)
回答No.1

floatでもdoubleでも内部では2進数で数値を表しています。 例として小数点以下は 0.1(2進)・・0.5 0.01・・・・・0.25 0.001・・・・0.125 このやり方で10進数→2進数→10進数とやると必ず元に戻るとは限りません。 2進数の桁数の限界による変換誤差ですね。

関連するQ&A