当我们在C ++中划分两个数组的整数时,如何在float中进行计算;

时间:2017-08-01 17:22:21

标签: c++ floating-point

我需要解决下面的问题,我需要将最终结果打印为float, 但是此代码将输出作为int值。

#include <iostream>
using namespace std;

int main()
{
    int T;
    cin>>T;

    for(int i=0; i<T; i++)
        {
            int N;
            cin>>N;
            int  A[N],B[N];
            float K=0;

                for(int j=0; j<N; j++)
                    cin>>A[i];

                 for(int j=0; j<N; j++)
                    cin>>B[i];

                 for(int j=0; j<N; j++)
                     K=(B[i]/A[i]) +  K ;

                     cout<<K<<endl;
        }
    return 0;    
}

输入: 1 2 4 2 10 6

输出:
6 期望的输出:
5.500000

2 个答案:

答案 0 :(得分:2)

使用一些C ++ 14技巧,您可以将计算简化为:

float K = std::inner_product(begin(B), end(B), begin(A), 0.0f, std::plus<float>{}, std::divides<float>{});

Demo

另请注意,动态数组是GCC扩展,因此以下代码不可移植:

int N;
cin>>N;
int  A[N],B[N];

我们可以使用简单的vector代替(我在上面的代码段中使用它):

    vector<int> A, B;
    int tmp;

    for(int j=0; j<N; j++){
        cin >> tmp;
        A.push_back(tmp);
    }

    for(int j=0; j<N; j++){
        cin >> tmp;
        B.push_back(tmp);
    }

说明:

std::inner_product主要用于......好吧,计算两个集合的内积(成对乘法的总和)。但是,它会对&#34; sum&#34;进行参数化。方面和&#34;产品&#34;方面,所以我们可以分发&#34;产品&#34;为了&#34;分裂&#34;。 C ++ 14 std::dividesstd::plus函数对象使我们更容易指定我们想要的操作(否则我们可以为C ++ 11编写一个lambda)。

答案 1 :(得分:0)

您需要将计算值中的一个输入为<DotNetCliToolReference>,结果为(float)值:

float