天国にいけるC言語入門 シーズン1 パソコン超初心者がゼロから東方風シューティングをつくる編 ver.0.4.15.789 RELIEF
おめでとう 実数値の数値計算の実行結果を整数値表示にするカールトンさんの問題も解決しました 解その3 %f出力変換指定子の書式設定%.0fをもちいる場合
おめでとう 実数値の数値計算の実行結果を整数値表示にするカールトンさんの問題も解決しました 解その3 %f出力変換指定子の書式設定%.0fをもちいる場合
☆おめでとう☆
実数値の数値計算の実行結果を整数値表示にするカールトンさんの問題も解決しました 解その3
☆%f出力変換指定子の書式設定%.0fをもちいる場合☆
清美「もうひとつ
プログラムの実行結果を
あなたの預金額はただいま10499.999523円です。
から
あなたの預金額はただいま10500円です。
に変更する方法をみつけちゃった てへ。」
聖美
「えっ もう1つ みつけたの!」
清美「実は、みんなもよく知っている方法なんだよ」
聖美「え~そんなの あったっけ?」
聡子「聡子 わかあんんな~い」
#include <stdio.h>
int main(void)
{
float a;
a=1.05;
printf("あなたの預金額はただいま%f円です。\n",10000*a);
return 0;
}
プログラムの実行結果(EAZY IDECの場合)
あなたの預金額はただいま10499.999523円です。
プログラムの実行結果(Visual Studioの場合)
あなたの預金額はただいま10500.000000円です。
清美「このソースコードをつくりかえて
プログラムの実行結果(EAZY IDECの場合)
あなたの預金額はただいま10499.999523円です。
を小数点以下の項をふくまない
プログラムの実行結果(EAZY IDECの場合)
あなたの預金額はただいま10500円です。
に変更するもう1つの方法は
%f出力変換指定子の書式設定をつかえばいいの。」
聡子「%f出力変換指定子の書式設定?」
清美「%f出力変換指定子は
%.0f
%.1f
%.2f
と記述することにより
%f出力変換指定子によって出力される実数値を
%.0fなら"小数点以下の項を表示しない"
%.1fなら"小数点以下第1位までの項を表示する"
%.2fなら"小数点以下第2位までの項を表示する"
ということができちゃうんだ。
そのさい
%.0fなら小数点以下第1位が四捨五入されて
整数値部分のみが表示され
%.1fなら小数点以下第2位が四捨五入されて
小数点以下第1位までの項が表示され
%.2fなら小数点以下第3位が四捨五入されて
小数点以下第2位までの項が表示され
ているんです~
だから
ソースコードを
出力変換指定子の書式設定%.0fをつかって
次のように記述すれば
👇
#include <stdio.h>
int main(void)
{
float a;
a=1.05;
printf("あなたの預金額はただいま%.0f円です。\n",10000*a);
return 0;
}
プログラムの実行結果(EAZY IDECの場合)
あなたの預金額はただいま10500円です。
👆
10499.999523の小数点以下第1位を四捨五入して
10500と表示させることができるんだ~
このように
%.0f
と記述して
小数点以下の項を表示しない設定にした場合では
小数点以下第1位の位は四捨五入が行われて
整数値部分のみが表示されているんだよ」
聖美「あなた いつのまに こんなに調べたの?
すんごいわねえ。
%.0f(整数値部分の項だけを表示する、小数点以下の項は表示しない)
と記述されたら
小数点以下第1位の位が四捨五入されて
%.1f(小数点以下第1位までの項を表示する)
と記述されたら
小数点以下第2位の位が四捨五入されて
%.2f(小数点以下2位までの項を表示する)
と記述されたら
小数点以下第3位の位が四捨五入されるわけね。
ここで
%.0f(整数値部分の項だけを表示する、小数点以下の項は表示しない)
と記述されたら
小数点以下第1位の位が四捨五入されるってところが
すごいわあ
だって
今のプログラムの場合では
👇
#include <stdio.h>
int main(void)
{
float a;
a=1.05;
printf("あなたの預金額はただいま%.0f円です。\n",10000*a);
return 0;
}
プログラムの実行結果(EAZY IDECの場合)
あなたの預金額はただいま10500円です。
👆
10000*a(a=1.05)の計算結果(10499.99923)の整数値部分を求めているわけだけど
10000*a(a=1.05)の計算結果(10499.99923)の☆小数点以下1位の位の数値9が四捨五入されている☆わよね
前のエピソードのプログラムの場合は
👇
#include <stdio.h>
int main(void)
{
int a;
a=105;
printf("あなたの預金額はただいま%d円です。\n",10000*a/100);
return 0;
}
プログラムの実行結果
(統合開発環境EAZY IDECの場合)
あなたの預金額はただいま10500円です。
👆
仮に
10000*a/100(a=105)の計算結果が
10500.0000011111になったとしても
10000*a/100(a=105)は整数値同士の掛け算なので
☆小数点以下の項.0000011111は切り捨てられることになる☆じゃない
これで
計算結果の整数値部分を求める際
計算結果の小数点以下第1位の位を四捨五入する方法
と
計算結果の小数点以下の項を切り捨てる方法
の
2つの方法
が使えるようになったってわけね
つまり
実数値の計算結果を整数値表示する場合
%.0fをもちいて
実数値の計算結果の小数点以下第1位の位を四捨五入する方法
と
実数値の計算をすべて整数値の計算に置き換えることにより
実数値の計算結果の小数点以下を切り捨てる方法
の
2つの方法
が使えるようになったってわけね」
おまけ
清美「あっ
思い出した
そういえば
前の前のエピソードのプログラムは
👇
#include <stdio.h>
int main(void)
{
float a;
a=1.05;
printf("あなたの預金額はただいま%d円です。\n",(int)(10000*a+0.5));
return 0;
}
プログラムの実行結果(EAZY IDECの場合)
あなたの預金額はただいま10500円です。
👆
あなたの預金額はただいま10499.999523円です。
を
あなたの預金額はただいま10500円です。
と表示するためのものだったね
(int)(10000*a+0.5)が用いられています
10000*a(a=1.05)の計算結果が
10499.999523
となるのだけど
10499.999523
を
なんとか
きれいに整数値の部分
10500
だけにしたというわけなの
結論からいうと
このプログラムでは
10000*a=10499.999523の小数点以下第1位を四捨五入して
10500を得る方法が用いられているの
(詳しくは前の前のエピソードを参照してください)
その方法が
(int)(10000*a+0.5)
なのね」
聡子「やったね 清美ちゃん」
新規登録で充実の読書を
- マイページ
- 読書の状況から作品を自動で分類して簡単に管理できる
- 小説の未読話数がひと目でわかり前回の続きから読める
- フォローしたユーザーの活動を追える
- 通知
- 小説の更新や作者の新作の情報を受け取れる
- 閲覧履歴
- 以前読んだ小説が一覧で見つけやすい
アカウントをお持ちの方はログイン
ビューワー設定
文字サイズ
背景色
フォント
組み方向
機能をオンにすると、画面の下部をタップする度に自動的にスクロールして読み進められます。
応援すると応援コメントも書けます