わさっきhb

大学(教育研究)とか ,親馬鹿とか,和歌山とか,とか,とか.

円周率の書き方

 Cのプログラムで,式に円周率の値をどのように書くとよいかについて,授業用のTeamsに質問があったので,即興で回答しました.

  • 1回だけなら「3.141562」のように式で書くといいでしょう.小数点以下の桁数(精度)はプログラムによって変わります.
  • 1つの関数(またはブロック)の中で何回も使用するなら,「double pi = 3.141562;」と宣言して,あとは変数piを使用するのがお勧めです.
  • 複数の関数で使用するなら,#includeの並びのあとに「#define PI 3.141562」という行を書いて,式の中ではPIと書きます.授業で「#define」は解説していませんが,1週間前の課題の答案でよく見かけました.

 なのですが,少し検索すれば,M_PIというオブジェクト形式マクロを見かけます.「#include <math.h>」と書けば使えます.
 そしてもう少し検索すれば,M_PIは標準仕様にないこともわかります.実際,paiza.IOでは使用できません.使えるようにする方法として,「#include <math.h>」より前に「#define _USE_MATH_DEFINES」を書くというのも,見つかりますが,paiza.IOではこれでもダメでした.
 もう少し工夫した対策として,「M_PIが定義されていない場合のみM_PIを定義してやる」というのがあります.以下のページの「#ifndef M_PI」から始まる(コメントを含め)4行のコードです.

 当ブログでも,プログラムを書いていました.2007年の記事です.

/* http://www2s.biglobe.ne.jp/~nuts/labo/inti/inti09.html より */
#ifndef M_PI
#define M_PI 3.14159265358979323846
#endif

 コメントに書いたURLは,本日もアクセスして内容を読むことができました.