>> DAVIDマラン：それでは、あなたの心を吹くましょう。
それは、1分割、現実の世界で判明 10で実際に1/10、または0.1である。
しかし、コンピュータでのみ有限のを持っている へのビットの数
数を表すには、常にできない 1月10日のような数を表すと
完璧な精度。
換言すれば、コンピュータは、時には有する 判定呼び出しを行うとしないように
必ずしも番号あなたを表す として正確にあなたが意図したとおりたい。
>> 例えば、私はに戻ったとし このプログラムとは0.1に変更、
それによって、そのことを示すOH、0.28、 私はにprintfにprintf関数が欲しい
精度の28場所。
それでは、プログラムを保存し、コンパイルしてみましょう、 メイクfloats2と今回。
ドットスラッシュfloats2でそれを実行します。
そして、親愛なる神、私は0.1を参照していないこの時期、 可愛いですが0.10000000、
良い今のところ。
しかし、その後、14901161193847656250。
>> さて、何が起こっているの？
まあ、それはフロートがあることが判明 通常、コンピュータの内部に格納さ
32ビットの。
32は明らかに有限個であり、これ あなただけ表現できることを意味します
32ビット有限数で 浮動小数点値。
残念ながら、つまり コンピュータは、すべての可能を表すことができない
浮動小数点数、または実数、 世界に存在することを、
それだけで非常に多くのビットを持っているので。
>> だから、コンピュータが明らかに何 この場合に行わに1/10を表している
最も近い浮動 それができることをポイント値。
しかし、我々は見てみると、我々がここにあるように、28に 小数点以下は、私たちはそれを見始める
不正確。
だから、これは問題です 完璧な解決策はありません。
我々は、代わりにフロートの二重を使用することができます として64ビットを使用する傾向がある
32に対向する。
しかし、もちろん、64も有限である、 その問題は、意志
でもダブルスで残っている。