0.0
と0.5
の間に浮動小数点数がいくつありますか? 0.5
と1.0
の間に浮動小数点数がいくつありますか?私はそれの背後にある数学にもっと興味があり、答えはfloats
とdoubles
です。特定の範囲にいくつの浮動小数点数がありますか?
答えて
IEEE754が浮くため、これはかなり単純です。 Online Float Calculatorを起動して、読んでください。
2のすべて純粋な電力はそれほど1及び0.5は、それぞれ1.0 × であり、実際1.0
による暗黙リーディング1指数をバイアスすることによって補正されることである仮数0
、によって表され、 1.0 × 、またはバイナリで:
S Ex + 127 Mantissa - 1 Hex
1: 0 01111111 00000000000000000000000 0x3F800000
+ 0 + 127 1.0
0.5: 0 01111110 00000000000000000000000 0x3F000000
+ -1 + 127 1.0
この形式で表現浮動小数点数を同じオードに順序付けられているので2進表現の整数値の差を取って0x800000 = であると結論付けるだけです。つまり、区間[0.5,1.0 )。
同様に、答えは2 double
ためとです。
... '0x3F000000'の表現可能な単精度浮動小数点数は、「0.0」と「0.5」の間に10億を超えています。ニース! – Arlen
0.0..0.5の場合:-1から指数をできるだけ低くすることを心配してから、仮数で表現できる別個の値の数を取得する回数を掛ける必要があります。
この範囲内のすべての値について、2倍にすると、0.5..1.0の範囲の値が得られます。それを倍増させるということは指数を上げることだけを意味します。
また、非正規化数については心配する必要があります。仮数は1.xではなく0.xを表すため、すべて下限になりますが、指数(指数の特定の値は、値が正規化されていないことを示すために使用されるため)。
"その範囲内のすべての値について、それを2倍にすると、0.5..1.0の範囲の値が得られます。えええええええええええええええええええええええええええええええええええええええええええええええええん、0501.1の範囲では、ulp(0.5)の下のすべての数字がすべて同じ(0.5)になることを意味する* 0.5を追加する必要はありません。 –
それは他の方向に向いています(0.5..1.0の範囲から、すべてのものを半分にする、どちらも低い範囲にマップされます)。 –
ええ、それは特にそれらのすべての番号を持っていないだろう<0.25 –
これは回答ではありませんが、nextafter
機能から多少の誤差が出る可能性があります。このような何かはあなたが数学を自分でうまくする必要がありますけれども、あなたは、あなたの質問に答えるべき:
float f = 0;
while(f < 0.5)
{
print("%f (repr: 0x%x)\n", f, *(unsigned *)&f);
f = nextafterf(f, 0.5);
}
これを試してみる前に**浮動小数点の表現可能な数値の半分**は浮動小数点数の倍数の20億(または0と1の間は10億)の浮動小数点数で-1と1の間です* ifあなたはしばらく待っているとカウントを開始します –
@ratchetfreak - 真ですが、あなたはおそらく最初の20からのパターンを一緒につなぎ始めることができます(そして私のような)基礎的な数学を知らない場合は、本当に知る必要があるのは始点と終点です。しかし、はい、それの背後にある数学を知っている方が良いです。 –
符号ビットが0で指数が< -1
の場合に限り、IEEE754形式の浮動小数点数は0.0以上0.5以下です。仮数ビットは任意でよい。 float
の場合、double
2^52の場合、許容指数当たり2^23
となります。許容できる指数はいくらですか?float
ために、正規化数の最小指数はdouble
ことが-1022だ、-126であるので[0, 0.5)
と
1022*2^52 = 4602678819172646912
double
値の
126*2^23 = 1056964608
float
値が存在します。どのように多くのビット:
Kerrekはここでも他の間隔で
http://coliru.stacked-crooked.com/a/7a75ba5eceb49f84
#include <iostream>
#include <cmath>
template<typename T>
unsigned long long int floatCount(T a, T b)
{
if (a > b)
return 0;
if (a == b)
return 1;
unsigned long long int count = 1;
while(a < b) {
a = std::nextafter(a, b);
++count;
}
return count;
}
int main()
{
std::cout << "number of floats in [0.5..1.0] interval are " << floatCount(0.5f, 1.0f);
}
プリント
number of floats in [0.5..1.0] interval are 8388609
- 1. 浮動小数点数の範囲
- 2. 浮動小数点の浮動小数点が正しく浮動しない
- 3. このコードでの範囲と浮動小数点数のインターミキシング
- 4. 浮動小数点数の範囲はQ16.16整数で表されますか?
- 5. 浮動小数点数の範囲でブール演算を行う標準のPythonクラスがありますか?
- 6. 浮動小数点型の最近傍の浮動小数点数に無効な文字があります
- 7. 範囲の縮小単精度浮動小数点の精度が悪い
- 8. 浮動小数点数は浮動小数点数ですか?
- 9. dotnetnukeのfloat内に浮動小数点がありますか?
- 10. 浮動小数点浮動小数点浮動小数点浮動小数点数 - 浮動小数点数を持つ2つの要素:左に動くようにdivを配置する右のスタイル
- 11. 浮動小数点数について
- 12. 浮動小数点型の浮動小数点数を使用している浮動小数点数は、浮動小数点数の上位16桁です。
- 13. CSSが浮動小数点浮動小数点を返す
- 14. 変数の浮動小数点浮動小数点
- 15. リストの中に浮動小数点があります
- 16. CSSが浮動小数点数の浮動小数点数の問題
- 17. Pythonの小数点と浮動小数点数のあいまいさは?
- 18. 中央要素が浮動小数点浮動小数点:左
- 19. 浮動小数点数浮動小数点数値
- 20. 小さな範囲を別の小さな範囲で割ったときの浮動小数点エラー
- 21. SSE 2以上 - 浮動小数点データ型に浮動小数点数が2つしかない理由
- 22. 浮動小数点値と浮動小数点値の比較
- 23. MySqlの浮動小数点浮動小数点データ型
- 24. jQuery animateNumber - 浮動小数点浮動小数点の方法
- 25. [0-255]整数の範囲を[0.0-1.0]浮動小数点範囲に変換する
- 26. Pythonリストの浮動小数点数が0になります
- 27. 私の浮動小数点左のdivsは、ページが狭すぎると浮動小数点になります
- 28. パンダに浮動小数点問題があります
- 29. Javascript:浮動小数点数を含む範囲のスライス/トリム配列
- 30. 浮動小数点型の浮動小数点ポストがポストボックス外に出る
ヒントを再生するためのコードです念のために最良の説明:)
を与えましたその分数範囲を表すために使用されますか? –
私は証明書を手元に置いていませんが、http://docs.oracle.com/cd/E19957-01/806-3568/ncg_goldberg.htmlまたはhttp:// floating-point-gui .de /。 – Crashworks
-0.0を数えることを忘れないでください:-) – franji1