在math.h有一个宏定义M_PI
#if defined _USE_MATH_DEFINES && !defined _MATH_DEFINES_DEFINED
#define _MATH_DEFINES_DEFINED
// Definitions of useful mathematical constants
// Define _USE_MATH_DEFINES before including <math.h> to expose these macro
// definitions for common math constants. These are placed under an #ifdef
// since these commonly-defined names are not part of the C or C++ standards
#define M_E 2.71828182845904523536 // e
#define M_LOG2E 1.44269504088896340736 // log2(e)
#define M_LOG10E 0.434294481903251827651 // log10(e)
#define M_LN2 0.693147180559945309417 // ln(2)
#define M_LN10 2.30258509299404568402 // ln(10)
#define M_PI 3.14159265358979323846 // pi
#define M_PI_2 1.57079632679489661923 // pi/2
#define M_PI_4 0.785398163397448309616 // pi/4
#define M_1_PI 0.318309886183790671538 // 1/pi
#define M_2_PI 0.636619772367581343076 // 2/pi
#define M_2_SQRTPI 1.12837916709551257390 // 2/sqrt(pi)
#define M_SQRT2 1.41421356237309504880 // sqrt(2)
#define M_SQRT1_2 0.707106781186547524401 // 1/sqrt(2)
#endif
但是在math.h中默认并没有定义_USE_MATH_DEFINES,因此如果需要使用M_PI的话需要在引用Math.h前先定义_USE_MATH_DEFINES
#include <iostream>
#define _USE_MATH_DEFINES
#include <math.h>
using namespace std;
void main()
cout << M_PI << endl;
当然如果不想这样麻烦的可以自己直接在文件中对pi进行宏定义
在math.h有一个宏定义M_PI#if defined _USE_MATH_DEFINES &amp;&amp; !defined _MATH_DEFINES_DEFINED #define _MATH_DEFINES_DEFINED // Definitions of useful mathematical constants // // Define _...
看了好几个博客都是说加<math.h>头文件后再#define
PI acos(-1)
但是其实<math.h>头文件里面其实本来就有根本不用自己定义,加了头文件后直接写M_
PI就可以了。
1.M_PI 是一个宏定义,圆周率的定义
#define M_PI 3.14159265358979323846 (参考)
此宏定义和编译器有关,TC中M_PI宏就定义在<math.h>里面。
但vc的<math.h>中没有了M_PI的宏定义。
2.M_E 是自然对数的一个宏定义
#define M_E 2.7182818284590452353...
// 输出结果并显示计算所用的时间
printf("&
pi; = %.100f\n",
pi);
printf("Time taken: %f seconds\n", (double)(end_time - start_time) / CLOCKS_PER_SEC);
return 0;
注意:这个程序只能求解&
pi;的前一亿位,如果要求解更多的位数,则需要增加 MAX_ITERATIONS 的
值。