浮動小数点

最終更新日08 Feb 2018 06:12

floatの場合

float.png
16進数で表現すると0x3E200000

float の表す値 = (-1)符号部 × 2指数部-127 × 1.仮数部

表すことのできる範囲

1.175494 10-38 < float の絶対値 < 3.402823 10+38

仮数部で表現できる範囲は、23ビットだから
23個すべて1で埋まった数を16進数で表現すると0x7fffff(7=0x0111とfが5個)
これは10進数にすると8388607である。
あーら、たったの7桁じゃない!

数でない数

16進数 %f
0x60000000 2681563534106135500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000.000000

doubleの場合

double.png

浮動少数のprintf

f
浮動小数点
a,A
浮動小数点を16進数で表現する。 ただし意味不明なものが羅列された。

floatのビットの様子を知るには?

#include <bitset>
union FloatInt
{
    float f;
    int i;
};
union FloatInt fi;
fi.f=0.15625;
bitset<32> bits(fi.i);
cout<<bits<<endl;

union

floatの出力

#include <sstream>
#include <iomanip>//setprecisionに必要
    std::ostringstream os;
    float a = 0.123456789f;
os << std::fixed;//固定の長さにする
    os<<setprecision(3);
    os << "a="<<a;
    cout << os.str() << endl;


ファイル

サポートサイト Wikidot.com