我有一个二维模板化的整数数组,我需要执行除法并转换为双精度(为了创建一个百分比)。它将作为
传递给函数定义中的函数 int votesarr[4][2]
对于数组中的每个int,我需要运行一个for循环(我假设)将数字除以10,000并输出生成的double值。
我不确定如何使用转换以及我需要传递给我还没有的功能(如果有的话)。
答案 0 :(得分:1)
根据您在评论中提供的额外信息,这是一种简单的方法,可以遍历int
矩阵并将值作为浮点值输出。
const std::size_t rows = 4;
const std::size_t cols = 2;
double divisor = 10000.0;
int votesarr[rows][cols]; // fill this somewhere...
for (std::size_t i = 0; i < rows; ++i) {
for (std::size_t j = 0; j < cols; ++j)
std::cout << static_cast<double>(votesarr[i][j])/divisor << ' ';
std::cout << '\n';
}
那就是说,如果你将votesarr
传递给不同的函数,那么我建议你使用其中一个:
std::array<std::array<int, 2>, 4> votesarr; // compile time dimensions known
或
std::vector<std::vector<int>> votesarr(4, std::vector<int>(2));
使其变得更简单,而不是使用C样式的数组,这些数组在传递给方法时会衰减为指针(阻止正确使用sizeof
来确定维度,强制您将行,列传递给函数)。
答案 1 :(得分:0)
所以你需要这样的东西:
double percentage = (double)votesarr[i][j]/10000.0;
std::cout >> percentage >> std::endl;
然而,除法是一种特殊情况 - 因为我的10000.0最后有“.0”,编译器将其视为double,(int)/(double)被视为(double)/(double) )
答案 2 :(得分:0)
#include <iostream>
using namespace std;
int main()
{
int votesarr[4][2] = {{1,1},{1,1},{1,1},{1,1}};
double result[4][2];
double temp;
for (int i = 0; i <= 3; i++) {
for (int j = 0; j <= 1; j++) {
temp = votesarr[i][j];
temp = temp/10000;
result[i][j] = temp;
}
}
// I just filled out the arrays by i+j
//then you need to divide each one by 10,000
//
return 0;
}