为什么打印为cout<<(4*(double)(r*r))<<endl;
的整数表示我的类型转换有问题。
我必须将输入r作为一个整数
输入-> 1输出-> 4
为什么
cout<<setprecision(2)<<ab2<<endl;
至少将答案四舍五入,因为我设置了精度2,它应该给出正确的答案直到两位数
输入-> 1输出-> 3.8
#include<bits/stdc++.h>
using namespace std;
int main(){
int t;
cin>>t;
while(t--){
long long int r;
cin>>r;
double ab2 = 4*(double)(r*r) - double(0.25);
cout<<4*(double)(r*r)<<endl;
cout<<setprecision(2)<<ab2<<endl;
cout<<ab2+0.25<<endl;
}
}
答案 0 :(得分:1)
我猜您将会看到与此代码类似的东西
int main() {
cout << fixed << setprecision(2); // fixed notation and two decimal places
int t;
cin >> t;
while (t--) {
long long int r;
cin >> r;
double ab2 = 4 * (double)(r*r) - double(0.25);
cout << 4 * (double)(r*r) << endl;
cout << ab2 << endl;
cout << ab2 + 0.25 << endl;
}
}
输入
1 1
输出
4.00
3.75
4.00
答案 1 :(得分:0)
为什么将
cout<<(4*(double)(r*r))<<endl;
打印为整数
这是一个双精度字,因此将其打印为双精度字。但是,它是代表整数的双精度数。
为什么
cout<<setprecision(2)<<ab2<<endl;
舍入答案
因为使用的精度比该值的有效位数小。