• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:出力結果について)

String型をfloat型に変換して計算した結果が予想と異なる理由

このQ&Aのポイント
  • 質問者は、String型からfloat型に変換して計算するプログラムを作成しました。
  • しかし、予想とは異なる結果が出力されています。
  • この理由について教えていただけると助かります。

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

  • ベストアンサー
noname#94983
noname#94983
回答No.1

まず、勘違いしてはならないのは、「0.00012」という数字は、実は「0.00012」ではない、という点。これは、正しくは「だいたい0.00012」だということを忘れてはならない。 コンピュータの世界では、実数は正しく扱うことができない。コンピュータの内部では数値は全て2進数で表現されるが、小数の場合、2進数では、10進数の小数をは正確な表現で表せないことがある。たとえば、0.1という値は、2進数では循環数(永遠に割り切れない数)となってしまう。これはたとえば「3分の1」が、10進数では正確に表現できないのと同じだと考えればいい。0.33333333……という値は、コンピュータのように「有限の桁数」で表現しようとすると必ず誤差を含んでしまう。 そんなわけで、実数の値には常に誤差が含まれている、と考えなければならない。1.2と0.00012を足すと、本来は1.20012のはずだが、両者の数字に含まれていた誤差が足されて0.0000001を越えてしまい、1.2001201という値になった、と考えればいいだろう。floatに限らずdoubleでも、これは変わらない。常に「実数は見えない誤差が含まれている」ということを考えながら処理するものだ、と考えるべき。

ci06
質問者

お礼

回答ありがとうございます。 わかりやすい説明で理解できました。 ありがとうございました。

関連するQ&A

専門家に質問してみよう