4

次の C コード

int main(){
    int n=10;    
    int t1=pow(10,2);
    int t2=pow(n,2);
    int t3=2*pow(n,2);
    printf("%d\n",t1);
    printf("%d\n",t2);
    printf("%d\n",t3);
    return (0);
}

次の出力が得られます

100
99
199

私はdevcppコンパイラを使用しています。意味がありませんよね?何か案は?(その pow(10,2) はおそらく 99.9999 のようなもので、最初の出力を説明していません。さらに、math.h を含めても同じ出力が得られました)

4

3 に答える 3

6

低品質の数学ライブラリを使用しています。優れた数学ライブラリは、正確に表現可能な値に対して正確な結果を返します。

一般に、浮動小数点形式は正確な数学的結果を正確に表すことができず、さまざまな関数の計算が難しいため、数学ライブラリ ルーチンは近似値でなければなりません。ただし、 の場合、10 2powなど、正確に表現できる結果の数は限られています。優れた数学ライブラリは、これらの結果が正しく返されることを保証します。使用しているライブラリはそれを行うことができません。

于 2013-06-04T16:55:59.870 に答える