タグ

floatに関するtakaesuのブックマーク (3)

  • 浮動小数点演算での誤差のはなし - サタケ家

    エクセルの仕事やってて、たまたま出てきた問題。 45.2 - 38.8 はいくつ? 常識的に考えたら、6.4 だよなあ。ところが。 vbaの答え ? 45.2-38.8 6.40000000000001 なんじゃこりゃああああああああああああああああ!!!!コンピュータのクセに間違うとはナニゴト!! 他の処理系はどうなんだろうと思って調べてみた。 perlの答え http://codepad.org/OWDONYfj $a=45.2; $b=38.8; print $a-$b # 6.40000000000001 rubyの答え http://codepad.org/TqYa8sA2 $a=45.2; $b=38.8; print $a-$b # 6.40000000000001 cの答え http://codepad.org/TKxjBYEB int main() { double a;

    浮動小数点演算での誤差のはなし - サタケ家
  • 小数点の計算をやるからといってすぐにfloatやdoubleを使ってはいけない - かとじゅんの技術日誌

    おつかれさまです。 型を選ぶというのはプログラミングの基礎中の基礎ですが、以外に開発の現場でも注意が必要なのが、floatとdoubleの精度の問題があります。これぐらい当然と思っていたのですが、最近よく耳にしますので、あえて言及w これらの型の目的が科学技術計算のための用途。多少誤差が生じても高速に演算をすることを目的としています。グラフィックなどの描画系とかですかね。 このように、float型やdouble型は誤差を含む可能性があるため、科学・工学計算で多少の誤差は許容できる場合はよいのですが、金融・会計分野のように正確な値が要求される計算には向きません。 どうしても正確な値が欲しい場合は、BigDecimalクラスを使用することになります。基データ型のdoubleやfloatと比較すると不便かつ低速ですが、精度が保証されており、丸め方も指定できます。 ここで言及されているように、お

    小数点の計算をやるからといってすぐにfloatやdoubleを使ってはいけない - かとじゅんの技術日誌
  • 浮動小数点数の等値比較 - Qiita

    二つの浮動小数点数が等しいかどうかを等値演算子で比較してはいけない。浮動小数点数には誤差があるため、直観的には等しいはずの二つの数が異なる場合がある。以下のRubyのスクリプトを実行すると 10.times { tmp += 0.1 } values = [[1.0 - 0.9, 0.1], [0.15 + 0.15, 0.1 + 0.2], [tmp, 1.0]] values.each {|pair| lhs, rhs = pair printf("lhs = %.18f, rhs = %.18f, diff = %.18f, == = %p\n", lhs, rhs, (lhs - rhs).abs, lhs == rhs); } lhs = 0.099999999999999978, rhs = 0.100000000000000006, diff = 0.000000000000

    浮動小数点数の等値比較 - Qiita
  • 1