💭
C のプログラムで円周率が欲しいとき
プログラミングをしていて円周率が欲しくなる場面は多々あると思います.
定数 M_PI を使う (非推奨)
あなたが,math.h を include したときに定数 M_PI が定義されるような恵まれた規格外の環境にいて,移植性を全く考えないような行儀の悪いプログラミングを許す場合は,M_PI を円周率の値として利用することができます.
test.c
#include <stdio.h>
#include <math.h>
int
main(int argc, char *argv[])
{
printf("M_PI is %f\n", M_PI);
return 0;
}
% gcc test.c
% ./a.out
M_PI is 3.141593
% c89 test.c
test.c: In function 'main':
test.c:7:25: error: 'M_PI' undeclared (first use in this function)
7 | printf("M_PI is %f\n", M_PI);
| ^~~~
test.c:7:25: note: each undeclared identifier is reported only once for each function it appears in
逆正接を使う
円周率といえば,
test.c
#include <stdio.h>
#include <math.h>
int
main(int argc, char *argv[])
{
printf("4 * atan(1) is %f\n", 4 * atan(1));
return 0;
}
% gcc test.c
% ./a.out
4 * atan(1) is 3.141593
% c89 test.c
% ./a.out
4 * atan(1) is 3.141593
自分で定義する
これなら誰も文句を言わないでしょう.
test.c
#include <stdio.h>
#define MY_PI 3.141592653589793238462643
int
main(int argc, char *argv[])
{
printf("MY_PI is %f\n", MY_PI);
return 0;
}
% gcc test.c
% ./a.out
MY_PI is 3.141593
% c89 test.c
% ./a.out
MY_PI is 3.141593
おわりに
おわりです.
Discussion