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

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
jun3453
記事: 22
登録日時: 14年前
住所: 東京

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

#1

投稿記事 by jun3453 » 9年前

桁がでかい計算をC言語でやろうと思い、

コード:

int main(){

	double a = 123456789012345678901234567890.0;

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

	return 0;
}

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

アバター
みけCAT
記事: 6734
登録日時: 14年前
住所: 千葉県
連絡を取る:

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

#2

投稿記事 by みけCAT » 9年前

C言語のdouble型の仕様では詳しい精度は決まっていなかったはずなので、
64ビットのIEEE754または実行している環境での浮動小数点数の仕様だと思います。
オフトピック
jun3453 さんが書きました:のようなコード
実際のコードでは、利用する関数はきちんと利用する前に宣言(宣言を含むヘッダのインクルードを含む)しましょう。
複雑な問題?マシンの性能を上げてOpenMPで殴ればいい!(死亡フラグ)

jun3453
記事: 22
登録日時: 14年前
住所: 東京

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

#3

投稿記事 by jun3453 » 9年前

みけCATさんありがとうございます。
インクルードコピーしてませんでした!すみません;;

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

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

閉鎖

“C言語何でも質問掲示板” へ戻る