[英]Why does my variable sannolikhet only print out zero?
我正在尝试创建一个程序来计算n
个人中至少有 2 个人生日相同的概率。
int main()
{
int n;
double sannolikhet = 1;
cout << "Skriv in antal personer mellan 2 - 182: ";
cin >> n;
在这里,我要求用户在数字 2 - 182 之间输入人数。
while (n < 2 || n > 182)
{
cout << "OBS! Skriv in ett tal mellan 2 - 182: \n";
cout << "Skriv in antal personer mellan 2 - 182: ";
cin >> n;
}
这是问题所在,每次i
更改时,我都希望它在sannolikhet
存储以前的计算。 我希望 for 循环像这样计算“365/365 * 364/365 * 363/365 ... (366-n)/365”。 当它最终打印出 sannolikhet 时,它只显示零。
for (int i = 1; i < n; i++)
{
sannolikhet = sannolikhet * ((366 - i) / 365);
}
cout << "Sannolikheten att två personer har samma födelsedag är: " << fixed << setprecision(7) << sannolikhet <<" procent";
return 0;
}
使用整数除法,答案会自动变成整数,四舍五入。
编辑:正如@john 更正的那样,答案被截断为整数而不是四舍五入
所以 364/365 将评估为 0
尝试替换sannolikhet = sannolikhet * ((366 - i) / 365);
sannolikhet = sannolikhet * ((366.0 - i) / 365.0);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.