[解決済み] IEEE754の浮動小数点が正確に表現できない最初の整数はどれでしょう?
2022-04-19 12:26:28
質問
IEE 754のfloatを実装している言語を使用している場合、わかりやすくするために、以下のように宣言します。
float f0 = 0.f;
float f1 = 1.f;
...そして、それらをプリントアウトし直すと、0.0000と1.0000が得られます - まさに。
しかし、IEEE754は実線に沿ったすべての数字を表現できるわけではありません。ゼロに近いところでは「ずれ」は小さく、離れると「ずれ」は大きくなる。
そこで、質問です。 IEEE754のフロートで、正確に表現できない最初の(ゼロに近い)整数はどれでしょうか? 私は今のところ32ビット浮動小数点にしか興味がないのですが、もし誰かが64ビットの答えを出したら聞いてみたいものです。
これは2を計算するのと同じくらい簡単だと思いました。 ビット を追加し、1 を加える。 ビット_オブ_マンティサ は、その規格が公開しているビット数です。私のマシン(MSVC++, Win64)では32bitのfloatに対してこれを行いましたが、問題ないようです。
どのように解決するのですか?
2 仮数ビット+1 + 1
指数が+1(仮数ビット+1)になっているのは、仮数に
abcdef...
を表し、その数値は実際には
1.abcdef... × 2^e
このため、暗黙のうちに精度が向上している。
したがって、最初の整数が
はできません。
は正確に表現され、丸められます。
について
float
, 16,777,217 (2
24
+ 1).
について
double
, 9,007,199,254,740,993 (2
53
+ 1).
>>> 9007199254740993.0
9007199254740992
関連
最新
-
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 実装 サイバーパンク風ボタン