Преобразование массива Int в двойной массив C ++ с десятичными числами - PullRequest
0 голосов
/ 09 сентября 2018

Например, у меня есть код

int results [11] [2], и мне нужно привести эти значения к двойному d [11] [2] с указанным десятичным значением, например, 4 знака слева. Мне уже показалось, что я разыграл double, бросив (double) снаружи массива перед одним из моих алгоритмов. Я не могу понять, как переместить заполнитель десятичного значения, и искал этот сайт и библиотеку C ++, пытаясь найти ответ. Я видел что-то на векторах, но я не уверен, что это такое. Некоторые из моих окончательных ответов - целые числа, например, 100, а некоторые - десятичные, например, 13,33.

1 Ответ

0 голосов
/ 09 сентября 2018

Я позволил себе поместить результаты комментариев в некоторый код:

#include <iostream>
#include <iomanip>
#include <algorithm>

// only for dirty random numbers:
#include <ctime>
#include <cstdlib>

int main()
{
    std::srand(static_cast<unsigned>(std::time(nullptr)));

    int foo[11][2];

    // some data:
    for (auto &f : foo)
        for (auto &i : f)
            i = rand();

    // copy to an array of arrays of doubles:
    double bar[11][2];
    std::copy(&foo[0][0], &foo[0][0] + 11 * 2, &bar[0][0]);

    // some calculation:
    for (auto &b : bar)
        for (auto &d : b)
            d *= 100. / rand();

    // output:
    for (auto &b : bar) {
        for (auto &d : b)
            std::cout << std::fixed << std::setw(8) << std::setprecision(4) << d << '\t';
        std::cout.put('\n');
    }
}

Пример вывода:

255.3750        155.6058
 45.7636        164.7974
 50.4983         99.8548
108.2106         90.2723
 42.8402         86.1336
241.4214        802.7950
175.9784         86.9273
 11.9571        741.2245
 95.0048        225.1073
 84.7645        389.8197
 39.6910          3.0909
...