当我们C++将两个数组的整数除以 时,如何获得浮点数计算;

How to get calculation in float when we divide the two array's integers in C++;

本文关键字:何获得 计算 浮点数 整数 C++ 我们 数组 两个      更新时间:2023-10-16

我需要解决下面的一个问题,我需要将最终结果打印为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

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

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

演示

另请注意,动态数组是 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主要用于...好吧,计算两个集合的内积(成对乘法的总和(。但是,它同时参数化了"总和"方面和"产品"方面,因此我们可以将"产品"换成"除法"。C++14std::dividesstd::plus函数对象使我们更容易指定所需的操作(否则我们可以为 C++11 编写 lambda(。

您需要将计算值之一类型转换为(float),以使结果成为float值:

#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[j];
for(int j = 0; j < N; j++)
cin >> B[j];
for(int j = 0; j < N; j++)
K += (float)B[j] / A[j];
cout << K << endl;
}
return 0;    
}