c++ - 避免对 Pi 的第 N 位进行四舍五入
问题描述
我正在尝试解决这个集合
的第一个问题
要查找并显示 Pi 的值直到第 N 位(作为用户输入受限于某个最大值,我猜最大 ds 可以容纳的最大小数位数很长我猜是双倍的?)
下面是我尝试的一个片段。
//declarations
typedef numeric_limits< long double > db;
int MAX = db::digits10;
int N = 0; //digit allowance
long double pi_val = M_PI;
string string_pi;
//user input
while(1){
cout << "Enter a value of n < or = " << MAX << endl;
cin >> N;
if(N>18){cout << "Lesser please" << endl;}
else
break;
}
//outputs
cout << "Pi till the " << N << " digit is: ";
cout << setprecision(N+1) << fixed << pi_val << endl;
string_pi = to_string((long double)pi_val * pow(10, N));
cout << string_pi << endl;
cout << "The Nth digit of pi is: " << string_pi[N] << endl;
Ps 我知道有更多新颖的方法可以解决这个问题,但由于我是 cpp 的一个极端初学者,通过让我的想法发挥作用,我会获得更好的成就感。
现在的问题是,它正确显示第 N 个数字,但 Pi 的输出直到第 N 个值总是被四舍五入,尽管有 'fixed' 和 'setprecision()' 所以我不得不显示一个额外的数字来与后一个输出相匹配
怎么能我解决了这个问题,如果可能的话不改变我使用的主要逻辑
谢谢
解决方案
推荐阅读
- java - 仅在 Spring Boot Rest api 中集成 PayPal
- python - 添加自定义 Django 模型验证的正确方法
- php - 如何使用 wordpress 挂钩阻止登录用户访问我的登录页面?
- javascript - Swiper JS:到达最后一张幻灯片后滚动过去的滑块
- python - 有没有办法在 Python 中对一组 2D 坐标进行 bin 处理
- c - 在C中,你可以在一个函数中修改一个全局变量,然后在同一个函数中使用修改后的值吗
- r - 给定R中的某些条件,如何计算数据框中的百分比,使用ifelse语句?
- c# - 如何在 Windows 中使用 C# 客户端创建具有静态 IP 的 docker 网络
- nunit - 当路径超过 255 时,TestContext.AddTestAttachment(string path) 未将文件附加到测试报告
- python-3.x - 使用 datetime 函数提取多个 URL