[解決済み] フロート」対「ダブル」精度
2022-04-27 09:33:58
質問
コード
float x = 3.141592653589793238;
double z = 3.141592653589793238;
printf("x=%f\n", x);
printf("z=%f\n", z);
printf("x=%20.18f\n", x);
printf("z=%20.18f\n", z);
が出力されます。
x=3.141593
z=3.141593
x=3.141592741012573242
z=3.141592653589793116
ここで、出力の3行目には
741012573242
はゴミで、4行目には
116
はゴミです。2倍算は常に有効数字16桁で、浮動小数点は常に有効数字7桁なのでしょうか?なぜdoubleは有効数字が14桁にならないのですか?
どうすれば解決するの?
C言語での浮動小数点数の利用 IEEE 754 エンコーディングになります。
このタイプのエンコーディングは、符号、シグニフィカント、指数を使用します。
このエンコーディングのため、多くの数値は小さな変更を加えて保存できるようになる。
また、10進法ではなく2進法での表現なので、有効桁数が若干変わることがあります。
単精度(float)では、シグニフィカンドが23ビット、指数が8ビット、符号ビットが1ビットとなります。
倍精度(double)は、52ビットのシグニフィカント、11ビットの指数、および1ビットの符号を与えます。
関連
-
未定義の `__isoc99_sscanf' への参照
-
[解決済み] SQLiteのINSERT/per-secondのパフォーマンスを向上させる
-
[解決済み] 文字列をfloatやintにパースするにはどうしたらいいですか?
-
[解決済み] .NETでのdecimal, float, doubleの違い?
-
[解決済み] 文字列が数値(float)であるかどうかを確認するにはどうすればよいですか?
-
[解決済み] 通貨を表すのにDoubleやFloatを使ってはいけないのですか?
-
[解決済み] HTML5でfloat入力タイプはありますか?
-
[解決済み] JavaScriptで浮動小数点数の精度を扱うには?
-
[解決済み] floatとdoubleの違いは何ですか?
-
[解決済み] C言語の構造体(CGRectやCGPointなど)をNSLog化することは可能ですか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
g++が内部・外部コマンドソリューションとして認識されない、MinGWを初めて使うときの落とし穴
-
#137: 式は変更可能なlvalueでなければならない問題 // 文字列配列の代入問題
-
[C] Error [Error] 代入の左オペランドとして lvalue が必要です。
-
[解決済み] Valgrind が初期化されていないバイトについて警告する
-
[解決済み] Code::Blocks アプリケーションをコンパイルできない
-
[解決済み] C 言語で const char* を char* に変換するには?
-
[解決済み] C言語のコードで「:-!」とは何ですか?
-
[解決済み] C言語で配列のサイズを決定するにはどうすればよいですか?
-
[解決済み] C言語で関数をパラメータとして渡すにはどうすればよいですか?
-
[解決済み] プログラム終了前にmallocの後にfreeをしないと本当に何が起こるのか?