数据类型将int转换为cpp中的double

时间:2019-01-11 22:19:47

标签: c++

为什么打印为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;

        }

    }

2 个答案:

答案 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;舍入答案

因为使用的精度比该值的有效位数小。