如何解决为什么我的变量sannolikhet仅输出零?
我正在尝试创建一个程序来计算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);
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。