アカウント名:
パスワード:
十数年仕事で(アマ時代を入れると20年以上)使っていたのに知らなかったので数日はまった。
バグったコードからエラー原因を簡素化したテストコードは以下。float型(i)とint型(k)で1ずつ加算していって異なったら標準エラーに出力。
#include <stdio.h>int main(){ float i; int k; i=0; for(k=0;k<=16777217;k++){ if(k != (int)i) fprintf(stderr,"%i %i\n",k,(int)i); i += 1; } return 0;}
えー常識だと思っていたけどな計算機イプシロンとかその辺で出てくる話題だと思た
計算機的な講義(世代により中学なり大学なり新人研修だったりするだろうけど)でイの一番に習いそうだけど。
浮動小数のバックグランドを知らない人間に浮動小数を扱わせてはいけない、の実例。
Z80用の単精度浮動小数点ライブラリを自分で書いてみたクチだから、どれくらい浮動小数点での加減算が信用できない(精度が足りなくなる)か身に染みて分かる。今は浮動小数点形式の構造ばかりか、スタックの構造やらポインタ、果てはデータのメモリ内での記憶方法なんぞを知らなくても良い時代になったと思えばいいのかなあ。
うーんこれは学術とか言語仕様以前の理解力の無さじゃないかって気がする…01のみでどう小数を扱ってるのかとか、わざわざ別の型として用意されていることについて、この人は20年間一切考えたことがなかったんだろうかとものすごく不安になる。
水の存在に気づかない魚のごとく、という感じでしょうか
人間の慣れの力は強力すぎて、"ひと目見てあきらかにおかしい"事にも気づかなくなる。それゆえ、人から見たら「気づかないほうがおかしい」バグの原因にもなる。
// 『ライト、ついてますか?』
より多くのコメントがこの議論にあるかもしれませんが、JavaScriptが有効ではない環境を使用している場合、クラシックなコメントシステム(D1)に設定を変更する必要があります。
UNIXはシンプルである。必要なのはそのシンプルさを理解する素質だけである -- Dennis Ritchie
floatで整数を数えあげちゃいけない@C言語 (スコア:1)
十数年仕事で(アマ時代を入れると20年以上)使っていたのに知らなかったので数日はまった。
バグったコードからエラー原因を簡素化したテストコードは以下。
float型(i)とint型(k)で1ずつ加算していって異なったら
標準エラーに出力。
Re: (スコア:0)
えー常識だと思っていたけどな
計算機イプシロンとかその辺で出てくる話題だと思た
Re: (スコア:0)
計算機的な講義(世代により中学なり大学なり新人研修だったりするだろうけど)でイの一番に習いそうだけど。
Re: (スコア:0)
浮動小数のバックグランドを知らない人間に浮動小数を扱わせてはいけない、の実例。
Re: (スコア:2)
Z80用の単精度浮動小数点ライブラリを自分で書いてみたクチだから、どれくらい浮動小数点での加減算が信用できない(精度が足りなくなる)か身に染みて分かる。
今は浮動小数点形式の構造ばかりか、スタックの構造やらポインタ、果てはデータのメモリ内での記憶方法なんぞを知らなくても良い時代になったと思えばいいのかなあ。
Re: (スコア:0)
うーんこれは学術とか言語仕様以前の理解力の無さじゃないかって気がする…
01のみでどう小数を扱ってるのかとか、
わざわざ別の型として用意されていることについて、
この人は20年間一切考えたことがなかったんだろうかとものすごく不安になる。
Re:floatで整数を数えあげちゃいけない@C言語 (スコア:2)
水の存在に気づかない魚のごとく、という感じでしょうか
人間の慣れの力は強力すぎて、"ひと目見てあきらかにおかしい"事にも気づかなくなる。
それゆえ、人から見たら「気づかないほうがおかしい」バグの原因にもなる。
// 『ライト、ついてますか?』