どうしてこのようなことがおこるのでしょうか?それはエピソードををよみすすめるにつれ理解できるようになるでしょう

☆コンピュータに扱える数値には範囲があります その12 変数の型(char,int,long,float,double)で変数宣言された変数の数値を格納できる範囲をお知らせいたします



☆コンピュータに扱える数値には範囲があります その12 変数の型(char, int, long, float, double)で変数宣言された変数の数値を格納できる範囲をお知らせいたします☆




ソーラー 「なんか額のあたりがまぶしいなあ、でもなんだ?


どんどん頭がクリアに・・なんか元気がでてくる・・・。


いい発想できそうな・・・


なんだろう・・・?」


業務用パソコン画面をみつめるソーラー。


画面には次のプログラムが浮かんでいる。


#include <stdio.h>


int main(void)

{

float a;

a=1.05;


printf("あなたの預金額はただいま%f円です。\n",10000*a);

return 0;

}


プログラムの実行結果(EAZY IDECの場合)


あなたの預金額はただいま10499.999523円です。



ソーラー 「なぜ?統合開発環境EAZY IDECでは


プログラムの実行結果が



あなたの預金額はただいま10500.000000円です。


ではなく


あなたの預金額はただいま10499.999523円です。


となるのか・・・


自分だけではわからないな・・・😝


 う~ん


😊ふふふ・・・


こちらも援軍をよばなくては・・・」


業務用パソコン画面をグーグルに切り替える。


ソーラー 「かも~ん、ぐっジョブCーーーーー。」


グーグルでぐっジョブCのサイトをよびだす。


ぐっジョブC 「ソーラーさん おひさしぶりです。


ぐっジョブCだヨ 今日は素敵な世界にいるじゃないか」


ぐっジョブCが語りかけてくる。


ソーラー 「ここは最高さ。仕事もたのしいし


貿易もうまくいってるしね。 


ぐっジョブC、 いま とりあえず


変数について


いろいろ調べようと


おもっているんだ。」


パソコン画面をまえのめりにみつめる。ソーラー。


ぐっじょぶC 「よ~し、わかったよ。ソーラー。


ここを読んでよ。 


元気よく手を振りながらパソコン画面の中にきえる。


ぐっじょぶCのサイトページの表示が切り替わる。


以下 ぐっじょぶC


変数について


整数値を格納する変数aの変数宣言においては


int a;

おこなわれます。


変数aの入れ物(変数の型)はintでした。


実数値を格納する変数bの変数宣言においては


float b;

おこなわれます。


変数bの入れ物(変数の型)はfloat でした。


int 、float以外にも さまざまな数値や文字を格納する


変数の入れ物(変数の型)があります。


変数の型 には 1例として


つぎのようなものがあります。


char  文字を格納する変数に対応する型

int   整数値を格納する変数に対応する型

long 整数値を格納する変数に対応する型

float   実数値を格納する変数に対応する型

double 実数値を格納する変数に対応する型


いずれも

変数を格納するいれものとなっています。


そして


char   文字を格納する変数に対応する型

int   整数値を格納する変数に対応する型

long 整数値を格納する変数に対応する型

float   実数値を格納する変数に対応する型

double 実数値を格納する変数に対応する型



これらの変数の型で


変数宣言された変数には


格納できる数値の範囲が決まっています


char型の変数

int型の変数

long型の変数

float型の変数   

double 型の変数


それぞれ


char型の変数 英数字1文字または整数値-128~127

int型の変数 -2147483648から2147483647までの整数値

long型の変数 -2147483648から2147483647までの整数値


float型の変数   


-3.4×(10の38乗)から- 3.4×(10の-38乗)までの実数値


0


3.4×(10の-38乗)から3.4×(10の38乗)までの実数値




double型の変数  


-1.7×(10の308乗)から-1.7×(10の-308乗)までの実数値


0


1.7×(10の-308乗)から1.7×(10の308乗)までの実数値



の範囲の数値を格納できることになっています。


ソーラー 「この表をみると


整数値でなく


実数値を変数に格納したいなら


変数の型はfloat、doubleを使いなさいってことだね


そして実数を変数に格納するのに


実数の型floatをつかって変数宣言を行うなら


float b;

b=2.34567;(適当に変数bを初期化しました。)


このように👆表記し


(初期化とはなにかの数値を変数に代入しておくことでしたね。)


実数の型double をつかって変数宣言を行うなら


double c;

c=5.67676; (適当に変数cを初期化しました。)


このように👆に表記しなさい。ということかな。」


(ここではソーラーさんは b=2.34567;


と変数bにb=2.34567; { 小数点以下5桁(笑)}と控えめに


数値を代入してきました。


桁数の多い数値を変数に代入すると正しく数値計算されない場合があるのを


さんざん(笑)しっていましたので、慎重に数値を代入してきました。


うふふ


ですが


float, double型の変数は格納できる数値の範囲が


👇

float型の変数   


-3.4×(10の38乗)から- 3.4×(10の-38乗)までの実数値


0


3.4×(10の-38乗)から3.4×(10の38乗)までの実数値




double型の変数  


-1.7×(10の308乗)から-1.7×(10の-308乗)までの実数値


0


1.7×(10の-308乗)から1.7×(10の308乗)までの実数値

👆


のように


大変大きいので、


float, double型の変数にふつうに数値を代入していれば


まずoverflow(数値をメモリに格納できないということ)はおこりません。


かなり小さな数、


たとえば


小数点以下20桁をもつ0.00000123456789012345のような実数を


float型の変数 ,double型の変数に格納することもできますが


コマンドプロンプト画面に%f出力表示するときは


小数点以下6位までしか表示することができません。)



ソーラー 

「むにゃ、むにゃ うふふふふふふっふ」


ソーラー

「・・・それぞれこのように表記しなさい。ということかな。


う~ん。 いい解説だ~。でへえ。 おいちい。おいちい。」


ニーモ 「あっ夢の中までC言語実況してるーーー。」


ソーラーの額に寝そべりながら、


ソーラーを観察していたニーモだが、


ニーモ 「たのしそうねー。何の夢、みてるのかなー。


わたしもいってみようかなー。」


ばーっと景気よく光がニーモの体からあふれだす。


るんるんるんと上機嫌に楽しそうに


鼻歌をうたいながらソーラーの額に手をつくと


その姿はすーぅときえていった。



















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

作者を応援しよう!

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

応援したユーザー

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

新規登録で充実の読書を

マイページ
読書の状況から作品を自動で分類して簡単に管理できる
小説の未読話数がひと目でわかり前回の続きから読める
フォローしたユーザーの活動を追える
通知
小説の更新や作者の新作の情報を受け取れる
閲覧履歴
以前読んだ小説が一覧で見つけやすい
新規ユーザー登録無料

アカウントをお持ちの方はログイン

カクヨムで可能な読書体験をくわしく知る