« 小人が現れるとき… | トップページ | 誤差…そいつは、困ったちゃん »

2005年7月19日 (火)

精度に潜む罠…

精度をが必要なときには
多分「double」を使うと思うが…。

しかし…。

#include <stdio.h>
void main( void )
{
    double    A;
    int    i;

    A    = 0.0;
    for( i = 0 ; i < 10 ; i++ )
        A    += 0.1;

    printf( "結果:%f - %s\n", A, A == 1.0 ? "1.0です。\n" : "1.0でありません。\n" );
}

結果:1.000000 - 1.0でありません。

おいおい、なんだよこれ?

表示結果が1.0なのに
1.0と等しくない?

でもこうすると…。

#include <stdio.h>
void main( void )
{
    double    A;
    int    i;

    A    = 0.0;
    for( i = 0 ; i < 5 ; i++ )
        A    += 0.2;

    printf( "結果:%f - %s\n", A, A == 1.0 ? "1.0です。\n" : "1.0でありません。\n" );
}

結果:1.000000 - 1.0です。

今度は、合った?

…。

謎である…。

Cには、
まだまだ解明されない
深い闇が
広がっているのである…。

…。

…。

…。

では、済まないので
敢えて結論を言おう!

微妙に1.0なのであると!

人は、これを誤差と呼ぶ!

|

« 小人が現れるとき… | トップページ | 誤差…そいつは、困ったちゃん »

コメント

コメントを書く



(ウェブ上には掲載しません)




トラックバック


この記事へのトラックバック一覧です: 精度に潜む罠…:

« 小人が現れるとき… | トップページ | 誤差…そいつは、困ったちゃん »