以下の内容はhttps://toburau.hatenablog.jp/entry/20120114/1326558361より取得しました。


floatの精度

ゲームプログラマになる前に覚えておきたい技術で次のような気になる文章が。

float変数に1を1億回足した答えは1677万だ。

floatの演算で計算誤差が出ることは知っていたけど、そこまで精度が無いとは。
ということで実際に試してみた。

#include <iostream>
using namespace std;

int main()
{
    float sum = 0.0f;
    for(int i=0; i<100000000; ++i)
    {
        sum += 1.0f;
    }
    cout.setf(ios::fixed);
    cout << sum;
}

実行結果
16777216.000000

おお、確かに。試しにdoubleにしてみたら1億となり、正しい答えが得られた。
float演算は自分が思っていたよりも精度が無いということを覚えておかないと。




以上の内容はhttps://toburau.hatenablog.jp/entry/20120114/1326558361より取得しました。
このページはhttp://font.textar.tv/のウェブフォントを使用してます

不具合報告/要望等はこちらへお願いします。
モバイルやる夫Viewer Ver0.14