【问题标题】:Division in C++ [duplicate]C ++中的除法[重复]
【发布时间】:2016-07-15 22:48:15
【问题描述】:

我是 C++ 新手,我尝试了这个简单的代码:

#include<iostream>
#include<math.h>
using namespace std;

int main(){
    double a;
    a=1/6;
    cout<<a;
}

但结果是 0。据我了解,double 应该适用于实数,所以结果不应该是 1/6 还是 0.1666666?谢谢!

【问题讨论】:

  • 不是double进行除法时,是int。后来,当您将其分配给 double 时,它​​变成了 double。使用1.0/6.0,它将按您的意愿工作。此外,1.0/61/6.0 也可以使用。
  • 因此你是新人:不要习惯using namespace std;
  • 另外,使用 c++ 标准头文件,因此,使用#include &lt;cmath&gt;

标签: c++ double implicit-conversion integer-arithmetic


【解决方案1】:

在表达式1 / 6 中,两个数字都是整数。这意味着该除法将执行整数除法,结果为0。要进行double 除法,一个数字必须是双精度数:例如1.0 / 6

【讨论】:

    【解决方案2】:

    整数文字16 具有int 类型。因此在表达式中

    1/6
    

    使用整数运算,结果等于0。

    至少使用一个操作数作为浮动文字。例如

    a = 1.0/6;
    

    a = 1/6.0;
    

    a = 1.0/6.0;
    

    【讨论】:

    • 这是否意味着 C++ 进行了隐式转换?很高兴在您的答案中添加此信息。
    • @RafaelCamposNunes 编译器需要确定操作数和结果的通用类型。如果操作数之一是浮点类型,它就是将整数类型转换为浮点类型的操作数的常用算术转换。
    猜你喜欢
    • 2021-12-11
    • 1970-01-01
    • 2010-11-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-04-17
    • 2018-05-01
    • 2011-08-26
    相关资源
    最近更新 更多