结构数组中的十进制浮点数有问题
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。
对于 int
s 之间的操作,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);
我遇到了一些麻烦,我什至不知道哪里出了问题,所以我需要一些帮助。 我需要为每个结构取数组中的一个结构所具有的数字的百分比。
我的结构看起来像
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。
对于 int
s 之间的操作,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);