タグ

技術とBigDecimalに関するsnjxのブックマーク (2)

  • Rubyで計算がずれてしまう理由と対策を教えてください。

    小数点を含む割り算の計算結果が思い通りになりません。 例えば、 670 ÷ 0.67 としたとき 1000 になってほしいのですが、 999.9999999999999 となってしまいます。 $ ruby -v ruby 2.6.3p62 (2019-04-16 revision 67580) [x86_64-darwin18] $ irb irb(main):001:0> 670 / 0.67 => 999.9999999999999 Node.jsでも同じでした。 $ node Welcome to Node.js v12.1.0. Type ".help" for more information. > 670 / 0.67 999.9999999999999 割り切れる数値だけ扱うプログラムなのですがうまく作れずに困っています。 こんな簡単な計算で躓くと思っていなかったので、小数を

    Rubyで計算がずれてしまう理由と対策を教えてください。
    snjx
    snjx 2020/01/28
    良い質問と答え
  • Rubyによる 小数 と Float と BigDecimalについて...(初心者向け) - Qiita

    はじめに これまで、リアルなお金を扱うシステムを作ったこともなかったし、小数を含む演算を実装することがこれまでなかったので小数演算の経験がほとんどありませんでした。(ほんと整数だけで大抵のことは大丈夫!!!) Float を使うと まるめ誤差 が生じて四捨五入や繰り上げ、繰り下げを利用するときに誤差が影響する場合があるということは話に聞いていたので、実際にどういう影響があるのか、対応する方法などについてRubyを使って調べてみました。 そもそも小数とは まずは小数についてをざっくり調べて見ると、、 浮動小数点数 - Wikipedia とか 固定小数点数 - Wikipedia とか色々出てくる。。これらをざっくり読むだけではうーんという感じなのでとりあえず表記方法だけみていこうと思います。 小数の表記方法 小数といえば、例えば 1.23 これです!! 小数点の表記方法としては他には以下の

    Rubyによる 小数 と Float と BigDecimalについて...(初心者向け) - Qiita
  • 1