结构数组中的十进制浮点数有问题

Having trouble with decimal float in struct array

我遇到了一些麻烦,我什至不知道哪里出了问题,所以我需要一些帮助。 我需要为每个结构取数组中的一个结构所具有的数字的百分比。

我的结构看起来像

struct person{
    int number;
    string name;
    float share;
}

所以我使用 for 循环来获取总数,没问题,一切都很好。但是当我试图得到总数的百分比时,我总是得到零。

for (int i=0; i<numberOfPersons;i++){
    people[i].share = 100 * ((people[i].number)/totalNumber);
}

我不明白这里出了什么问题,但是当我计算时,people[i].share 总是显示为 0.00。

从字面上看,我所做的就是计算它,然后从数字和总数中得到正确的值。所以我真的很困惑。

如果我翻转除法问题,我会得到答案(显然不是正确的答案),所以我知道当 for 循环 运行s 时字段中有数据。但是,当我 运行 我需要 运行 的方程式时,它会去哪里?

我尝试初始化它并保持未初始化状态,将指针交换为循环内生成的整数等等,我总是得到相同的结果。

请帮我理解。

我推测您的 totalnumber 类型是 int 并且 person.number 也是 int。

对于 ints 之间的操作,return 值仍然是 int

展开people[i].share = 100 * ((people[i].number)/totalNumber);

它会像 people[i].share = 100 * ( 1/10 );

=> people[i].share = 100 * ( 0 );

=> people[i].share = 0;

所以你会得到 0 作为结果;

为了防止它,将 int 之一转换为 float。

people[i].share = 100 * ((static_cast<float>(people[i].number))/totalNumber);