//find square root of a number n till d decimal points
#include<iostream>
#include<iomanip>
using namespace std;
int main(){
int n;int d;cin>>n>>d;
double x=n;int i=1;
while(i<=20){
float t=(x+n/x)/2;i++;x=t;
}
cout<<fixed<<setprecision(d)<<x<<endl;
}
这个算法似乎是正确的,但是当我认为setprecision将我不想要的数字四舍五入时。 setprecision()的任何其他替代方案都没有完善我的最终答案? INPUT 10 4 给了我3.1623 但答案是3.1622 同样输入10 7给了我3.1622777,它的小数点后面有2位。
答案 0 :(得分:1)
要将值截断为d小数位,请乘以10 ^ d,取楼层,然后除以相同的数字。
double multiplier = pow(10, d);
double result = floor(t * multiplier) / multiplier;
cout << fixed << setprecision(d) << result << endl;