- ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:出力結果について)
String型をfloat型に変換して計算した結果が予想と異なる理由
このQ&Aのポイント
- 質問者は、String型からfloat型に変換して計算するプログラムを作成しました。
- しかし、予想とは異なる結果が出力されています。
- この理由について教えていただけると助かります。
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
- ベストアンサー
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でも、これは変わらない。常に「実数は見えない誤差が含まれている」ということを考えながら処理するものだ、と考えるべき。
お礼
回答ありがとうございます。 わかりやすい説明で理解できました。 ありがとうございました。