素敵な詩 FLT_MIN = 1.175494e-038, FLT_MAX = 3.402823e+038   0.1

ソーラー 「まだまだ’つっこみ’も’ぼけ’も足りないんだ~~~」


アレサ 「はい(^^)、そうです。ソーラーさん」


ソーラー 「


変数の型floatをつかって実数を4バイト(32ビット)のメモリに


わたって格納するとき


あちらの世界でみてきた


変数の型float(4バイト)の数値を格納する仕組みをみてもわかるように


(4バイト)32ビットの左端の1ビットには


その数値が+か-をあらわす0か1が格納されることとなっている。


それとは関係なく・・・」


アレサ 「0000111010・・・・それとは関係なく・・・01110001・・・」


ソーラーを見つめるアレサ。


ソーラー 「それとは関係ありでした。」


アレサ 「そうですか 00011111000000」


ソーラー 「つまりコンピューターが教えてくれた


変数の型floatの数値の格納範囲


FLT_MIN = 1.175494e-038, FLT_MAX = 3.402823e+038


ふるっとみん ふるたまくす・・・」


アレサ 「000000 ふるっとみん ふるたまくすは・・・0000000」


ソーラー「


このような表記


FLT_MIN = 1.175494e-038, FLT_MAX = 3.402823e+038


では・・・・一見すると


変数の型floatが格納できる数値の範囲は正の数だけで


その格納できる数値の


正の数の最小値はFLT_MIN = 1.175494e-038

正の数の最大値はFLT_MAX = 3.402823e+038 


に見えますね。 


ですが 変数の型floatはもともとマイナスの数値も


格納できる。


だから


これは正確には何を表示しているか というと」


アレサ「 🐤 🐤 」


ソーラー 「正確には


変数の型floatに格納できる数値Aの範囲が


🍋格納できる正の数値の範囲🍋-3.402823e+038<A< -1.175494e-038,


🍓格納できる負の数値の範囲🍓1.175494e-038<A< 3.402823e+038


である ということをあらわしています。」


アレサ「え・・・」


ソーラー「なぜかというと


変数の型floatに


🍓格納できる負の数値の範囲🍓の絶対値をとると


-3.402823e+038<A< -1.175494e-038,


|-3.402823e+038|>A>|-1.175494e-038|


1.175494e-038<A< 3.402823e+038



🍋格納できる正の数値の範囲🍋と一致するので


まとめて


変数の型floatの数値の格納範囲は


FLT_MIN = 1.175494e-038, FLT_MAX = 3.402823e+038


と表記しています。


つまり、コンパイル結果が表示している



    🍈FLT_MIN = 1.175494e-038, FLT_MAX = 3.402823e+038🍈



変数の型floatに格納できる数値の範囲の


絶対値のみを簡潔にあらわしているということになるんです。」



アレサ 「・・そうです。000011 ソーラーさん。


そう思います。


今の変数の型floatの正確に格納できる数値の範囲にもとづき


本当の


変数の型floatに格納できる


数値Aの格納領域の最大値と最小値


をあらわしてみると


最小値 = -3.402823e+038

最大値 = 3.402823e+038


となります


そこで


コンピュータに


FLT_MIN = -3.402823e+038, FLT_MAX = 3.402823e+038


と表示してしまうと


あたかも


変数の型floatに格納できる数値Aの格納領域が


-3.402823e+038,<A<3.402823e+038


のようにみえます。


それに対し


変数の型floatに格納できる数値の範囲の

絶対値だけを表示する


FLT_MIN = 1.175494e-038, FLT_MAX = 3.402823e+038の場合は


変数の型floatに格納できる数値Aの範囲は


-3.402823e+038<A< -1.175494e-038,


1.175494e-038<A< 3.402823e+038


をあらわすことになります。


ですから


変数の型floatに格納できる数値の


最大値 3.402823e+038


最小値-3.402823e+038を


表示するだけでは格納できる数値の範囲を正確にあらわすことはできないと


おもわれます


そこで 


コンパイル結果では


FLT_MIN = 1.175494e-038, FLT_MAX = 3.402823e+038


と表示されていると思われます 000・・・」


ソーラー 「やっぱし! そう思う? アレサ」


アレサ 「そう思います。ソーラーさん」


ソーラー「FLT_MIN = 1.175494e-038, FLT_MAX = 3.402823e+038


このように


変数の型floatに格納できる数値を


絶対値だけで表示するのはシンプルで


かっこいいね。」










  • Twitterで共有
  • Facebookで共有
  • はてなブックマークでブックマーク

作者を応援しよう!

ハートをクリックで、簡単に応援の気持ちを伝えられます。(ログインが必要です)

応援したユーザー

応援すると応援コメントも書けます