繁体   English   中英

为什么我的变量 sannolikhet 只打印出零?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM