I';我想用C++;但它一直输出1 正如标题所说,这个代码是为了计算2个在5组中有相同生日的人的概率,但它只输出1,我对C++是相当新的,所以任何帮助都会被理解。 #include <iostream> using namespace std; int main(){ float p; p=1-(364/365)*(363/365)*(362/365)*(361/365); cout<<p; } #包括 使用名称空间std; int main(){ 浮动p; p=1-(364/365)*(363/365)*(362/365)*(361/365); 如果在每个数字上都加一个.0,则会将其视为双精度而不是整数。整数除法(364/365)等于0

I';我想用C++;但它一直输出1 正如标题所说,这个代码是为了计算2个在5组中有相同生日的人的概率,但它只输出1,我对C++是相当新的,所以任何帮助都会被理解。 #include <iostream> using namespace std; int main(){ float p; p=1-(364/365)*(363/365)*(362/365)*(361/365); cout<<p; } #包括 使用名称空间std; int main(){ 浮动p; p=1-(364/365)*(363/365)*(362/365)*(361/365); 如果在每个数字上都加一个.0,则会将其视为双精度而不是整数。整数除法(364/365)等于0,c++,C++,在每个数字上加一个.0,这样将被视为双精度而不是整数。整数除法(364/365)等于0 这是因为在计算364/365后,计算结果是一个整数,即0 要让它工作,就这样改变它 p=1-(364/365.0)*(363/365.0)*(362/365.0)*(361/365.0); 这是因为在计算364/365后,计算结果是一个整数,即0 要让它工作,就这样改变它 p=1-(364/365.0)*(363/365.0)*(362/365.0)*(361/365.0); 当两种类型都是int时,您需

在每个数字上加一个.0,这样将被视为双精度而不是整数。整数除法(364/365)等于0


这是因为在计算
364/365
后,计算结果是一个整数,即
0

要让它工作,就这样改变它

p=1-(364/365.0)*(363/365.0)*(362/365.0)*(361/365.0);

这是因为在计算
364/365
后,计算结果是一个整数,即
0

要让它工作,就这样改变它

p=1-(364/365.0)*(363/365.0)*(362/365.0)*(361/365.0);

当两种类型都是
int
时,您需要将整数强制转换为浮点,因为
/
舍入为结果下方的最大整数:

p=1-(float(364)/float(365))*(float(363)/float(365))*(float(362)/float(365))*(float(361)/float(365));

当两种类型都是
int
时,您需要将整数强制转换为浮点,因为
/
舍入为结果下方的最大整数:

p=1-(float(364)/float(365))*(float(363)/float(365))*(float(362)/float(365))*(float(361)/float(365));

你的分子和分母是整数类型,因为你的结果也是一个整数值。我对C++是相当新的——用<代码> int <代码>将<代码> int >代码> >产生<代码> int >代码>,在C++的书或你使用的材料中应该很早就被覆盖。@ LalikuMar不把答案放在注释中。你的分子和分母是整数类型,因为你的结果也是一个整数值。我对C++是相当新的——用<代码> int <代码>将<代码> int >代码> >产生<代码> int <代码>。C++的书或材料中,如果不是很早,就应该被覆盖得很早。评论部分