[ 通常表示 ]  [ 簡易表示 ]  [ シンプル表示 ]

「分かりそう」で「分からない」でも「分かった」気になれるIT用語辞典イメージぴよ画像「分かりそう」で「分からない」でも「分かった」気になれるIT用語辞典

アンダーフロー (underflow)

pointこの用語のポイント

point小数点以下の桁数が多すぎるよ

point表現しきれなくなったよ

スポンサーリンク

簡単に書くよ

アンダーフロー (underflow)とは

オーバーフローの逆……とも言えるけど、誤解を招きそうだなぁ、のこと。
もう少し具体的に書くと

数値の小数点以下の桁数が細かすぎて表現できない状態のこと
です。

image piyo

詳しく書くよ

オーバーフローは「『これより大きい数字は入れられないよ』な限界よりも大きい数字を入れようとしておかしな状態になっちゃうこと」ね。
例えば、2桁の数字(0~99)が入る箱に「10×10」の計算結果(100)を入れようとしたような状態です。

アンダーフロー

このオーバーフローの逆で、数値が小さ過ぎておかしな状態になっちゃうのがアンダーフロー……ではありません。
数値が「細かすぎて」おかしな状態になっちゃうのが「アンダーフロー」です。

「小さすぎて」ではありません。
「細かすぎて」です。
ご注意ください。

「-100」と「99.00000000001」を比較すると「-100」の方が小さい数字ですよね。
ですが「-100」は表現できるけど「99.00000000001」は表現できない、という事態も起こりえるのです。

入れる値が表現できる桁数よりも大きすぎて、表現しきれないのがオーバーフローです。
入れる値が表現できる桁数よりも細かすぎて、表現しきれないのがアンダーフローです。

それでは、アンダーフローについて、もう少し細かく説明します。

例えばここに、点数を表示する電光掲示板があったとしましょう。

アンダーフロー2

この電光掲示板で表現できるのは「0」から「9.9」までの数字です。

アンダーフロー3

さて、この電光掲示板を使って点数を表示していました。
ところがどっこい、あるとき「9.25」を表現したくなったのです。

アンダーフロー4

どうしましょうね?

どうしようもありません。

この電光掲示板は小数点以下1桁まで表現できる電光掲示板です。
どう頑張っても小数点以下2桁まである「9.25」は表現できません。

アンダーフロー5

これがアンダーフローです。

実はプログラムの世界でも同じことが起こりえます。

プログラミングの世界では「変数」と呼ばれる、値を入れる箱を使います。

アンダーフロー6

「数値型の変数」と言った場合は、プログラミング世界における「数字を入れておく箱」です。
この数字を入れておく箱(数値型の変数)も電光掲示板と一緒です。
表現できる数字の桁数には限界があります。

そして、この「限界」には二種類あります。

整数部の桁数

の限界と

小数部の桁数

の限界です。

整数部の桁数あふれを、オーバーフローと言います。
例えば「0」から「9.9」まで表現できる電光掲示板で「10」を表現しようとした場合です。

アンダーフロー7

小数部の桁数あふれが、アンダーフローです。
例えば「0」から「9.9」まで表現できる電光掲示板で「9.25」を表現しようとした場合です。

アンダーフロー8

ポイントは

数字の大小は関係ない。関係があるのは桁数

です。

数字の大小を比較すると

0 < 9.25 < 9.9

になります。
ですが、アンダーフローが発生するのは真ん中の「9.25」です。
「0」と「9.9」は問題なく表現できます。

image piyo2

一言でまとめるよ

まぁ「アンダーフロー」って単語が出てきたら「小数点以下の桁数が細かすぎて表現できない状態なんだな~」と、お考えください。

一番上に戻るよ
スポンサーリンク