【问题标题】:I'm trying to do an equation in C++ but it keeps outputting 1 [duplicate]我正在尝试在 C++ 中做一个方程式,但它一直输出 1 [重复]
【发布时间】:2020-04-13 18:49:42
【问题描述】:

正如标题所说,此代码旨在计算 5 人一组中 2 人生日相同的概率,但它只输出 1,我对 C++ 还很陌生,因此不胜感激。

#include <iostream>
using namespace std;
int main(){
float p;

p=1-(364/365)*(363/365)*(362/365)*(361/365);
cout<<p;
}

【问题讨论】:

  • 您的分子和分母是整数类型,因此您的结果也是整数值。
  • 我是 C++ 新手 -- 将 int 除以 int 得到 int 应该很早就被覆盖了,如果不是马上的话, 在您正在使用的 C++ 书籍或资料中。
  • @Lalitkumar 不要将答案放在 cmets 部分

标签: c++


【解决方案1】:

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

p=1.0-(364.0/365.0)*(363.0/365.0)*(362.0/365.0)*(361.0/365.0);

【讨论】:

    【解决方案2】:

    这是因为在计算364/365 之后,计算出的答案是一个整数,即0

    为了让它工作,像这样改变它。

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

    【讨论】:

      【解决方案3】:

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

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

      【讨论】:

        猜你喜欢
        • 2017-08-01
        • 2019-04-13
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-07-12
        • 2019-03-09
        相关资源
        最近更新 更多