%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


と表示されているというわけですね。」


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

作者を応援しよう!

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

応援したユーザー

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

新規登録で充実の読書を

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

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

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