提问者:小点点

向量没有正确存储分数[重复]


#include <iostream>     // required for outputting text on screen and for reading the user's input
#include <vector>       // required to store the runeworth in Hel-runes in a vector
#include <cmath>        // required for powers of numbers

int main()
{
    //runeworth in Hel-runes
    std::vector<double> rune_worth {1/27,1/9,1/3,1};
    for(int i=0;i<17;i++)
    {
        rune_worth.push_back(pow(3,i));
    }
    std::cout << rune_worth[0]*27;
    return 0;
}

预期结果=1(1/27*27=1)

结果=0

所以向量不是按我想要的方式接受分数。 我做错了什么?


共1个答案

匿名用户

本声明:

std::vector<double> rune_worth {1/27,1/9,1/3,1};

将在rune_worth中存储值{0.,0.,0.,1.},因为您正在对初始值进行整数除法。 例如1/27是整数0,而不是小数值。

相反,您可以执行以下操作:

std::vector<double> rune_worth {1./27, 1./9, 1./3, 1.};