c - C中的百分比计算

标签 c

我正在尝试计算一个百分比来计算主队获胜的次数,但是当我知道我除以的值是正确的时候,我一直收到 0。

我试过用指针值计算它,然后用指针输出百分比,但似乎没有任何效果。

//update function
void update(int * totalGames, int * homeTeamWins, double * homeTeamWinPercentage, int difference) {

*totalGames = *totalGames + 1;
if (difference >= 0) 
    *homeTeamWins = *homeTeamWins + 1;

homeTeamWinPercentage = (*homeTeamWins / *totalGames);

}

//summary function
void summary(int totalGames, int homeTeamWins, double homeTeamWinPercentage) {

//* homeTeamWinPercentage = (homeTeamWins / totalGames);

printf("\n Of the %d total games, %d home teams won, resulting in a %d%.2f%% home team win percentage\n", totalGames, homeTeamWins, homeTeamWinPercentage);

}



// in my main
void main() { 
        ...
        ...
    while (!feof(file1)) {

    output(homeTeam, visitingTeam, difference);
    update(&totalGames, &homeTeamWins, &homeTeamWinPercentage, difference);
}

summary(totalGames, homeTeamWins, homeTeamWinPercentage);
system("pause");
}

在总共 13 场比赛中,主队赢了 7 场,主队胜率 -8589934600.00%。

我可以看出它指向内存中的某个地方。我已经让它打印 0.00% 的百分比,但这仍然对我没有帮助。

我正在尝试实现 homeTeamWins/totalGames = homeTeamWinPercentage (7/13=53.18%),但遇到了麻烦。

最佳答案

问题出在这一行:

homeTeamWinPercentage = (*homeTeamWins / *totalGames);

表达式 (*homeTeamWins/*totalGames); 将执行整数除法并返回一个整数。

改为使用:

((double) *homeTeamWins / (double) *totalGames)

因此,您的更新函数应如下所示:

void update(int * totalGames, int * homeTeamWins, double * eTeamWinPercentage,
            int difference)
{
    *totalGames = *totalGames + 1;
    if (difference >= 0) 
        *homeTeamWins = *homeTeamWins + 1;

    *homeTeamWinPercentage = ((double) *homeTeamWins / (double) *totalGames) * 100;
}

P.S:刚刚注意到您使用了非常奇怪的方式来打印输出。 使用以下行,效果很好:)

printf("Of %d total Games, %d home teams won, percentage: %0.2f", totalGames, homeTeamWins, percent);

希望对您有所帮助:))

关于c - C中的百分比计算,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58231968/

相关文章:

c - 读取C中的文件行

c - 让用户选择 C ​​中数组的大小

c - 调试 C 中的函数

c - 调用 strcpy 的结果与预期不同

c - 为什么我的 PRO*C 程序的控制不进入 if 部分?

c++ - ffmpeg命令行的c/c++程序

c - 输入验证分配并显示是否为二维字符数组

c - char s[] 和 char *s 在初始化方面有什么区别?

c++ - 'WinMain' 上的注释不匹配(window api)

c++ - 我应该使用 C 类型 (uint8_t/.../uint64_t) 还是 (u_int8_t/.../u_int64_t)?