すこしだけ実際にソーラーたちがどのように問題を解いているのか その様子をのぞいてみましょう。 その8


すこしだけ実際にソーラーたちがどのように問題を解いているのか その様子をのぞいてみましょう。 その8




ソーラー 「よーし、


//

計算式の1部分に小数点以下を含む数値


つまり


実数

実数を格納している変数

を含んでいたら


式の計算結果が


aが1.05なので


10000*a=10500


などのように


整数値となるようにみえても


実際は


これらの式の計算結果は実数値となっており


その計算結果をprintf出力表示するには


%d出力変換指定子でなく


%f出力変換指定子をつかいます

//


この具体例を


もっといろいろ


プログラムを構成して


詳しく観察していきましょうか。」


ぐっジョブC  「ごーごー(^^)/ 」


ぐっどワークC 「ソーラー、その調子、その調子(^^)/ 」


ソーラー「まずは


このプログラムです。


#include <stdio.h>


int main(void)

{

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

return 0;

}


ソーラー 「コンパイルっ。」


プログラムの実行結果


Visual Studioの場合

EAZY IDECの場合


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

続行するには何かキーを押してください・・・_


ソーラー

「やっぱり


10000*1.5の計算結果は


実数値1.5が式中にふくまれているため


10000*1.5の計算結果は実数値となっているようです。


%d出力変換指定子ではうまく結果が表示されないみたいだね


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


か・・・」


ぐっジョブC  「ごーごー(^^)/ 」


ソーラー

「では


次は


今のプログラムの


%d出力変換指定子を


%f出力変換指定子



変えてコンパイルしてみましょう。


#include <stdio.h>


int main(void)

{

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

return 0;

}

ソーラー 「コンパイルっ。」


プログラムの実行結果


Visual Studioの場合

EAZY IDECの場合



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

続行するには何かキーを押してください・・・_


ソーラー 「普通に


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


がprintf出力表示されましたね。


大成功です


実数値をprintf出力表示するのに


%f出力変換指定子をもちいたので


うまく


計算結果がprintf出力表示されたのですね。


いつもどおり小数点以下は6桁表示となっています。」


ぐっどワークC 「もっと もっと \(^^)/」


ソーラー 「では


次は

実数値を格納した変数を計算式中につかってみましょう。


まず

float a;

と変数宣言し


作製されたfloat型の変数aに

1.5を代入します


そして

10000*a

を行い


計算結果を%d出力変換指定子を用いて


printf出力表示してみます。


#include <stdio.h>


int main(void)

{

float a;

a=1.5;


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

return 0;

}


ソーラー 「コンパイルっ。」




プログラムの実行結果


Visual Studioの場合

EAZY IDECの場合



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

続行するには何かキーを押してください・・・_




ソーラー 「おおっ貴重なデータが取れたかも(^^)/


ていうか


やっぱり


正しく計算結果が表示されません


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


0円 


0か・・・・・


いつものように


ど派手に-564783901円とかでてこないね・・・」


☆   ☆   ☆


おまけ


10000*aの部分を

1.5777777777に切り替えるとどのような結果が表示されるかな?



#include <stdio.h>


int main(void)

{

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

return 0;

}


プログラムの実行結果


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


C:\Users\solar\source\repos\Project2\Debug\Project2.exe (プロセス 2595768) は、コード 0 で終了しました。

このウィンドウを閉じるには、任意のキーを押してください...



派手に数値が


表示されます


☆   ☆   ☆

   



ぐっどワークC 「もっと もっと \(^^)/ 」


ぐっジョブC  「もっと もっと \(^^)/ 」


ソーラー 「ふふふふふふふふふふふ」


ぐっジョブC 「どうしたのソーラー?」


ソーラー  「ふふふふふ 


みなさんは碁をうったことがおありでしょうか?


だってこれではまるで


コンピューターと碁をうっているみたいです。


こちらがa=1.5と碁石をおくと


コンピュータは0と碁石をうち返してくる。


このやりとりを繰り返しているうちに


コンピューターの碁石をうち返してくる規則性が


みぬけるかもしれないとおもうと


コンピューターと遊んでいるみたいで。


ふふふふふふふ。」


ぐっどワークC 「もうっ聡子ったら・・・」


ソーラー 「ではでは 


今度は


float a;

と変数宣言した後


作製された

変数aに1.5を代入し


10000*aの計算結果を


%f出力変換指定子をもちいてprintf出力表示してみます。 


#include <stdio.h>


int main(void)

{

float a;

a=1.5;


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

return 0;

}


ソーラー 「コンパイルっ。」




プログラムの実行結果


Visual Studioの場合

EAZY IDECの場合



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

続行するには何かキーを押してください・・・_


ソーラー「やはり


%f出力変換指定子をもちいた場合は10000*aの計算結果は


正しくprintf出力表示されました。


10000*aは実数値となっているのですね。


実数値を%f出力変換指定子をもちいて


printf出力表示したときの


小数点以下6桁表示も健在ですね。


👇

//

計算式の1部分に小数点以下を含む数値


つまり


実数や


実数を格納している変数を含んでいたら


たとえば


aが1.05で


式の計算結果が

10000*a=10500


などのように

整数値となるようにみえても


実際は


この式10000*aの計算結果は実数値となっており


その計算結果をprintf出力表示するには


%d出力変換指定子でなく


%f出力変換指定子をつかいます

//

👆


このことがなりたっているのが確認できるね。」





solarplexuss


「それにしても


話はちょっとかわるけど


なぜか整数値を%f出力変換指定子を用いて


printf出力表示すると


0.000000


が表示されますね。


みなさんお忘れかもしれないので


たとえば


整数値1を


%f出力変換指定子を用いて


printf出力表示してみましょう。」


#include <stdio.h>


int main(void)

{

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

return 0;


solarplexuss「コンパイルっ。」


プログラムの実行結果


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

続行するには何かキーを押してください・・・_


solarplexuss 

「う~ん、やっぱり そうか・・・・・


そして


今度は


実数値1.5を


%d出力変換指定子を用いて


printf出力表示してみましょう。


#include <stdio.h>


int main(void)

{

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

return 0;

}


プログラムの実行結果


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


solarplexuss「


プログラムの実行結果


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


この0円というところです。


なぜこんな綺麗な数値0がprintf出力表示されるのか?


どんな秘密がかくされているのか


楽しみがふえました。」


ソーラー 「そうですね


solarplexussさん 


どんな仕組みがかくれているのか


どきどきしますね。


いずれ解けるときがくるのが楽しみです(*´▽`*)。。」





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

作者を応援しよう!

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

応援したユーザー

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

新規登録で充実の読書を

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

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

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