%e出力変換指定子の仕組みを調べてみましょう。
%e出力変換指定子の仕組みを調べてみましょう。
てんC「そして次は・・・
抹茶屋さんのサイトには」
🍎4
printf("[%.3e]", 1234.5678);
プログラムの実行結果
[1.235e+03]
と記述されていますね。
ぶーにゃん「[1.235e+03] かにゃ?」
てんC「
プログラム内では次のように表記されます。」
#include <stdio.h>
int main(void)
{
printf("[%.3e]\n", 1234.5678);
return 0;
}
てんC「実際にこのプログラムを実行してみましょう」
プログラムの実行結果(EAZY IDECの場合)
[1.235e+003]
プログラムの実行結果(Visual Studioの場合)
[1.235e+03]
てんC「2つの統合開発環境で違いがでてきました。
どうやら抹茶屋さんは
Visual Studioをつかっておられるようですね。
抹茶屋さんの表示結果も
[1.235e+03]
でした。」
ぶーにゃん「この
printf("[%.3e]\n", 1234.5678);の
の中に出て来る[%.3e]とは
なんのことにゃ~ん ぺろっ」
てんC「では😊
%.3e
に取り掛かる前に
実数を整数部分1桁×10の指数表示であらわす
%e出力変換指定子の基本的な仕組みを一緒にみていきましょう。
まずは
🌞%eとだけ🌞
記述されている場合のお話です
次のプログラムをご覧ください」
#include <stdio.h>
int main(void)
{
printf("[%e]\n", 1234.5678);
return 0;
}
プログラムの実行結果(EAZY IDECの場合)
[1.234568e+003]
プログラムの実行結果
[1.234568e+03](Visual Studioの場合)
ここで
e+003
e+03
ともに
10の3乗を表しています。
%e出力変換指定子は
1234.5678のような実数を
10の指数を用いて表現したいときに使われます
1234.5678
は
10の指数を用いて
1.2345678e+03(1.2345678×10の3乗)
と
表されますが
printf("[%e]\n", 1234.5678);
が実行されると
1234.5678
イコール
1.2345678e+03(1.2345678×10の3乗)
の
1.2345678
の
小数点以下7位の8の8は四捨五入され
1.234568e+03
となり
プログラムの実行結果は
1.234568e+03
と表示されます。
なぜなら
1234.5678
を
10の指数表示にする場合でも小数点以下は6桁になるよう
設定されているからです。
では
printf("[%e]\n", 1234.5678);
ではなく
printf("[%e]\n", 5234.5678);
が実行されたなら
どのような実行結果が
コマンドプロンプト画面に表示されるでしょうか?
#include <stdio.h>
int main(void)
{
printf("[%e]\n", 5234.5678);
return 0;
}
プログラムの実行結果(Visual Studio2019の場合)
[5.234568e+03]
C:\Users\solar\source\repos\Project2\Debug\Project2.exe (プロセス 98272) は、コード 0 で終了しました。
このウィンドウを閉じるには、任意のキーを押してください...
」
ぶーにゃん「あっ先頭の数値が1から5になったにゃん」
てんC「そうですね
5234.5678
は
10の指数を用いて
5.2345678e+03(5.2345678×10の3乗)
と
表されますが
printf("[%e]\n", 5234.5678);
が実行されると
5234.5678
すなわち
5.2345678e+03(5.2345678×10の3乗)
の
5.2345678
の
小数点以下7位の8の8は四捨五入され
5.234568e+03
となり
プログラムの実行結果は
5.234568e+03
と表示されます。
なぜなら
5234.5678
を
10の指数表示にする場合でも小数点以下は6桁になるよう
設定されているからです。
では
%.3e
が用いられた
printf("[%.3e]\n", 1234.5678);
が実行されたなら
どのような実行結果が表示されるでしょうか?
#include <stdio.h>
int main(void)
{
printf("[%.3e]\n", 1234.5678);
return 0;
}
プログラムの実行結果(Visual Studio2019の場合)
[1.235e+03]
C:\Users\solar\source\repos\Project2\Debug\Project2.exe (プロセス 99228) は、コード 0 で終了しました。
このウィンドウを閉じるには、任意のキーを押してください...
てんC「
1234.5678
は
10の指数を用いて
1.2345678e+03(1.2345678×10の3乗)
と
表されますが
printf("[%.3e]\n", 1234.5678);
の
.3
は
小数点以下3位までを表示するという設定になります
ですので
1234.5678
すなわち
1.2345678e+03(1.2345678×10の3乗)
の
1.2345678
の
小数点以下第4位の5は四捨五入され
1.235e+03
となり
プログラムの実行結果は
1.235e+03
と表示されます」
てんC「では~
ところで
printf("[%12s]", "I am a cat.");
では
全体に表示される半角文字(桁数)を
(半角スペースも1文字とみなされます)
12に指定するために%12s
と表記していました
ではでは
%e出力変換指定子の左側に
%5eのように
表示される桁数を指定する5を
eの左側に付け加えたなら
プログラムの実行結果はどのように表示されるか
試してみましょう。」
#include <stdio.h>
int main(void)
{
printf("[%5e]\n", 1234.5678);
return 0;
}
プログラムの実行結果(EAZY IDECの場合)
[1.234568e+003]
プログラムの実行結果
[1.234568e+03](Visual Studioの場合)
ぶーにゃん「%eと%5e
ではプログラムの実行結果に違いはないのにゃ~ん」
てんC
「そのようですね。
%5eを%11eに変えても
#include <stdio.h>
int main(void)
{
printf("[%11e]\n", 1234.5678);
return 0;
}
プログラムの実行結果(EAZY IDECの場合)
[1.234568e+003]
プログラムの実行結果
[1.234568e+03](Visual Studioの場合)
てんC「プログラムの実行結果に変化はありませんね。
では
[%5.3e]と表記されたなら
プログラムの実行結果はどのようになるかを
試してみましょう。」
#include <stdio.h>
int main(void)
{
printf("[%5.3e]\n", 1234.5678);
return 0;
}
プログラムの実行結果(EAZY IDECの場合)
[1.235e+003]
プログラムの実行結果
[1.235e+03](Visual Studioの場合)
てんC「
%.3e
と
%5.3e
では
違いがでてきませんね
%5e
や
%5.3e
の
5は
まったく書式設定に関係してこないのですね
では
[%.2e]と表記されたなら
プログラムの実行結果はどのようになるかを
試してみましょう。
以下のプログラムを実行すると
#include <stdio.h>
int main(void)
{
printf("[%.2e]\n", 1234.5678);
return 0;
}
プログラムの実行結果(EAZY IDECの場合)
[1.23e+003]
プログラムの実行結果
[1.23e+03](Visual Studioの場合)
となります。」
てんC「%.2eのはたらきにより
小数点以下2位までが表示されています。
この場合は
1.23のように小数点以下第2位までが表示されるために
1234.5678
すなわち
1,2345678×10の3乗
の
小数点以下3位の4
が
四捨五入され
1.23×10の3乗となったものが
コマンドプロンプト画面に
1.23e+03
と表示されているというわけですね。」
新規登録で充実の読書を
- マイページ
- 読書の状況から作品を自動で分類して簡単に管理できる
- 小説の未読話数がひと目でわかり前回の続きから読める
- フォローしたユーザーの活動を追える
- 通知
- 小説の更新や作者の新作の情報を受け取れる
- 閲覧履歴
- 以前読んだ小説が一覧で見つけやすい
アカウントをお持ちの方はログイン
ビューワー設定
文字サイズ
背景色
フォント
組み方向
機能をオンにすると、画面の下部をタップする度に自動的にスクロールして読み進められます。
応援すると応援コメントも書けます