Swift等々、よく見る主要な言語の殆どと言っていい)に共通して見られる現象です。誤差」辺りで検索すると、いろいろヒットしますので、興味があればご自身で調べて見てください。私がJavaScriptでの同様の問題について書いたものはこちら。ついては、目的によります。挙げていくと内部的にも10進演算を行うライブラリを使用するRubyならBigDecimal四捨五入をうまくやって誤魔化すExcelは実はこれコンピュータでの演算はこんなものだと開き直る科学技術計算では演算誤差が入るのは当たり前macOS上のirbでBigDecimalを使った例はこちら。|4なぜできないのか、を順を追って細かく説明します。0.67はFloatのリテラルである。RubyのFloatはCのdoubleによって実装されており、メモリ上の表現は環境依存である。binary64)を表現方法に使用している。ない環境を私は知らない。基数が2である(2進数として管理している)ため、十進数表記の"0.67"になる数値を正確に表現することはできない。0.67)と打ってみればわかる。)よって、Rubyでの0.67というリテラルは十進数表記の"0.67"そのもの数値ではなく、"0.67"に極めて近いが異なる数値になる。もつ精度の範囲内である。対して、670はIntegerであり、"670"そのものであるが、/の計算にあたり、Floatに変換される(Numeric#coerceという仕組みになっているが、Cレベルの実装では個別に最適化している場合がある)。表現可能な整数のみの範囲内であるため、"670"そのものである。持つ精度の範囲内での誤差により、"1000"そのものになるとは限らない。会計処理など極めて厳密な十進数での計算が必要な時は問題になります。BigDecimalを使う方法もありますが、RubyではRationalを使う方法もあります。|回答スタック・オーバーフローに参加してくれて、ありがとうございます!質問の回答を共有してください。回答を説明し、自分の検討結果も共有してください。意見を述べること(意見を述べるなら、参照リソース、自分の経験で意見をサポートしてください)さらにサポートが必要な場合このヘルプを参考してください。“回答を投稿”をクリックすることで利用規約、プライバシーポリシー、及びクッキーポリシーに同意したものとみなされます。タグが付いた他の質問を参照するか、自分で質問をする。二次元配列のまとめ方について教えてください。質問のフィードこのRSSフィードを購読するには、このURLをコピーしてRSSリーダーに貼り付けてください。