将数组int值转换为双精度

时间:2016-10-14 21:00:53

标签: c++ arrays function for-loop type-conversion

我有一个二维模板化的整数数组,我需要执行除法并转换为双精度(为了创建一个百分比)。它将作为

传递给函数定义中的函数
    int votesarr[4][2]

对于数组中的每个int,我需要运行一个for循环(我假设)将数字除以10,000并输出生成的double值。

我不确定如何使用转换以及我需要传递给我还没有的功能(如果有的话)。

3 个答案:

答案 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;
告诉编译器您要将其强制转换为double。您可以使用(char),(int),(customType)等来执行此操作...

然而,除法是一种特殊情况 - 因为我的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;
}