整数除法总是为零

Saf*_*ari 11 c++ math floating-point double visual-studio

可能重复:
C编程部门

可能我的问题非常简单和愚蠢.我想存储的分割的价值,特别是1 / x其中x是一个整数值.

int x = 17;
double result = 1/x;
Run Code Online (Sandbox Code Playgroud)

我尝试这样做,但我总是0.000000 ...试着输入一个固定在x中的值,例如1/17但总是得到相同的值..什么是错的?

Mik*_*ley 28

你正在进行整数除法.

尝试以下操作,它将按预期工作:

int x = 17;
double result = 1.0 / x;
Run Code Online (Sandbox Code Playgroud)

该类型的1在你有上述表达式是int,和的类型x为int.当你这样做时int / int,你会得到一个int.您需要至少有一种类型是浮点(float或double),以便进行浮点除法.

与数学不同,C++中的除法可以指截断的整数除法(你做了什么)或浮点除法(我在我的例子中做了什么).小心这个!

在我的例子中,明确我们拥有的是什么double / int -> double.

  • 或者说清楚:`double result =(double)1/x;` (3认同)