06
1109

私もうfloatくんのこと…信じられない…!

ざわ…ざわ…

#include <stdio .h>

int main() {
        float x = 16777216.0;
        printf( "x = %f\n", x );
        x += 1.0;
        printf( "x+1.0 = %f\n", x );

        x = 16777217.0;
        printf( "16777217.0 = %f\n", x );

        return 0;
}
出力:
x = 16777216.000000
x+1.0 = 16777216.000000
16777217.0 = 16777216.000000

16777217 = 16777216
そうかわかった人類は滅亡する!

浮動小数は基本的に数が大きくなればなるほど精度(表せる数の幅)が大きくなるとか、16777215で仮数部が最大値となって指数部が繰り上がることによって数字の最小単位(分解能みたいなもの?)が2になるとか、ごにょごにょといろいろあるらしいのだけれど、解説はまた気が向いたら。ぼくに理解可能ならば。

posted on 2009-11-06 06:15 | Tags :