Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/138.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 为什么我的变量sannolikhet只打印出零?_C++_C++11 - Fatal编程技术网

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

C++ 为什么我的变量sannolikhet只打印出零?,c++,c++11,C++,C++11,我正在尝试创建一个程序,计算至少两个人的生日相同的概率 int main() { int n; double sannolikhet = 1; cout << "Skriv in antal personer mellan 2 - 182: "; cin >> n; 使用整数除法,答案将自动转换为整数,并向下舍入。 编辑:如@john所更正的,答案被截断为整数而不是四舍五入 因此,364/365将计算为0 尝试替换sannolikhet=s

我正在尝试创建一个程序,计算至少两个人的生日相同的概率

int main()
{


int n;
double sannolikhet = 1;

cout << "Skriv in antal personer mellan 2 - 182: ";
cin >> n;  

使用整数除法,答案将自动转换为整数,并向下舍入。
编辑:如@john所更正的,答案被截断为整数而不是四舍五入
因此,364/365将计算为0

尝试替换
sannolikhet=sannolikhet*((366-i)/365)

sannolikhet=sannolikhet*((366.0-i)/365.0)

使用整数除法,答案将自动转换为整数,并向下舍入。
编辑:如@john所更正的,答案被截断为整数而不是四舍五入
因此,364/365将计算为0

尝试替换
sannolikhet=sannolikhet*((366-i)/365)

sannolikhet=sannolikhet*((366.0-i)/365.0)

严格来说,整数除法向零舍入。换句话说,它是截短的,而不是四舍五入的。我是编程新手,所以我总是犯这样的错误。现在它正常工作了,谢谢你的帮助!除法需要双倍,而不是减法。备选方案:
(366-i)/365.0
严格来说,整数除法舍入为零。换句话说,它是截短的,而不是四舍五入的。我是编程新手,所以我总是犯这样的错误。现在它正常工作了,谢谢你的帮助!除法需要双倍,而不是减法。备选方案:
(366-i)/365.0
sannoliket
不是零。
((366-i)/365)
的结果适用于大量的
i
值,因为将
int
类型的两个值进行除法,会产生
int
类型的值,并向零舍入。
sannoliket
不是零。
((366-i)/365)
的结果适用于大量的
i
值,因为将
int
类型的两个值进行除法,会产生
int
类型的值,且四舍五入为零。
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;
}
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;

}