C++无限计算圆周率并实时输出 - 代码详解
下面是一个使用C++编写的计算圆周率的代码,它会一直进行计算,每计算出一位就输出一次,并且在关闭程序时将结果存储到文件pi.txt中。
#include <iostream>
#include <fstream>
void calculatePi() {
std::ofstream file('pi.txt'); // 打开文件
long double pi = 0.0;
long double sign = 1.0;
long double denominator = 1.0;
long double term = 0.0;
int i = 0;
while (true) {
term = sign / denominator;
pi += term;
sign = -sign;
denominator += 2.0;
// 每计算出一位就输出
std::cout << 'Pi: ' << pi * 4 << std::endl;
// 存储到文件
file << 'Pi: ' << pi * 4 << std::endl;
i++;
if (i % 100000 == 0) {
file.flush(); // 刷新缓冲区
}
}
file.close(); // 关闭文件
}
int main() {
calculatePi();
return 0;
}
这段代码使用了莱布尼茨级数的方法来计算圆周率,每计算出一位就输出一次,并将结果存储到pi.txt文件中。请注意,这个算法是一个无限循环,需要手动关闭程序。
代码详解:
#include <iostream>: 引入输入输出流库#include <fstream>: 引入文件操作库calculatePi()函数:std::ofstream file('pi.txt');: 打开文件pi.txt并准备写入long double pi = 0.0;: 初始化圆周率变量long double sign = 1.0;: 初始化符号变量,用于交替加减long double denominator = 1.0;: 初始化分母变量long double term = 0.0;: 初始化每一项的值int i = 0;: 初始化循环计数器while (true): 无限循环term = sign / denominator;: 计算每一项的值pi += term;: 将当前项的值累加到圆周率变量中sign = -sign;: 切换符号变量denominator += 2.0;: 更新分母变量std::cout << 'Pi: ' << pi * 4 << std::endl;: 输出当前计算出的圆周率值file << 'Pi: ' << pi * 4 << std::endl;: 将当前计算出的圆周率值写入文件i++;: 计数器加1if (i % 100000 == 0): 每计算100000次,刷新文件缓冲区,确保数据及时写入文件
file.close();: 关闭文件
main()函数: 调用calculatePi()函数,开始计算圆周率
原文地址: https://www.cveoy.top/t/topic/qBZT 著作权归作者所有。请勿转载和采集!