☆ぽっち☆◎さんとモバ友になろう!

日記・サークル・友達・楽しみいっぱい!

Yahoo! JAPAN IDだけで遊べる!今すぐ遊ぶ!

    • 2012/5/18 1:41
    • 丸め誤差と情報欠落
    • コメント(3)
    • 閲覧(14)
  • "アバター"
    • float f,t,r;

      // n=1000の場合
      f = 0.0;
      r = 0.0;
      for(int i = 0; i<1000; i++) {
      f+=1.0/1000.0;
      }
      printf("float: n=%d sum=%f\n", 1000, f);

      // n=4096の場合
      f = 0.0;
      for(int i = 0; i<4096; i++) {
      f += 1.0/4096.0;
      }
      printf("float: n=%d sum=%f\n", 4096, f);
      }

      f+=1.0/1000.0を
      t = f +( 1.0/1000.0 + r );
      r = ( 1.0/1000.0 + r ) - ( t - f );
      f = t;
      と書き換えると1になります
      t:f+=1.0/1000.0をf=f+1.0/1000.0にひろった誤差rもくわえている
      r:誤差をひろう

      なぜ1.0/1000.0だと誤差がでて
      1.0/4096.0だとちゃんと1ってでるんですか
      情報欠落と丸め誤差が関係してるそうです。
      わってることは1.0/1000.0は2進数になおすと循環小数?になるらしいです

コメント一覧

更新する

この日記を違反通報する

☆ぽっち☆◎さんの
お友達の最新日記

日記を探す

気になるキーワードで検索

みんなの新着日記