ページ 11

桁のでかい場合のprintfの限界

Posted: 2016年4月01日(金) 18:32
by jun3453
桁がでかい計算をC言語でやろうと思い、

コード:

int main(){

	double a = 123456789012345678901234567890.0;

	printf("%f\n",a);

	return 0;
}

のようなコードを書いてコンパイルしてみると、
123456789012345680000000000000.000000
のような値が表示されていました。
17桁目から繰り上がりされているようですが、これはdouble型の仕様なのでしょうか?

Re: 桁のでかい場合のprintfの限界

Posted: 2016年4月01日(金) 20:02
by みけCAT
C言語のdouble型の仕様では詳しい精度は決まっていなかったはずなので、
64ビットのIEEE754または実行している環境での浮動小数点数の仕様だと思います。
オフトピック
jun3453 さんが書きました:のようなコード
実際のコードでは、利用する関数はきちんと利用する前に宣言(宣言を含むヘッダのインクルードを含む)しましょう。

Re: 桁のでかい場合のprintfの限界

Posted: 2016年4月02日(土) 19:01
by jun3453
みけCATさんありがとうございます。
インクルードコピーしてませんでした!すみません;;

この現象は環境による仕様なのですね~。

またよろしくお願いします!