エントリーの編集
エントリーの編集は全ユーザーに共通の機能です。
必ずガイドラインを一読の上ご利用ください。
浮動小数点の数値を比較する - Ruby Tips!
記事へのコメント0件
- 注目コメント
- 新着コメント
このエントリーにコメントしてみましょう。
注目コメント算出アルゴリズムの一部にLINEヤフー株式会社の「建設的コメント順位付けモデルAPI」を使用しています
- バナー広告なし
- ミュート機能あり
- ダークモード搭載
関連記事
浮動小数点の数値を比較する - Ruby Tips!
一般的に浮動小数点は精度の問題から完全一致による比較が難しい。 一例として、1.0と、0.1を10回加算し... 一般的に浮動小数点は精度の問題から完全一致による比較が難しい。 一例として、1.0と、0.1を10回加算した数値は一致しない。 v0 = 1.0 v1 = 0 ; 10.times{ v1 += 0.1 } p v0 == v1 #=> false 浮動小数点の比較を行うには、一致とみなす許容値を決めて、数値が許容値の範囲内であれば一致とみなすアプローチが必要だ。 簡単なのは、浮動小数点を文字列化してしまい、指定した桁数まで一致するかを確認する方法だ。 浮動小数点の数値の文字列化には、sprintfが使用できる。 v0 = 1.0 v1 = 0 ; 10.times{ v1 += 0.1 } format = "%.3e" # 小数点以下3桁で比較する p sprintf(format, v0) == sprintf(format, v1) #=> true より細かな比較を行いたいなら、