整数除法总是为零

时间:2012-02-26 17:20:34

标签: c++ visual-studio math floating-point double

  

可能重复:
  C programming division

可能我的问题很简单也很愚蠢。 我想存储一个除法的值,特别是1 / x x 整数值。

int x = 17;
double result = 1/x;

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

1 个答案:

答案 0 :(得分:28)

你正在进行整数除法。

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

int x = 17;
double result = 1.0 / x;

上面表达式中1的类型为intx的类型为int。当你执行int / int时,你会得到一个int。您需要至少有一种类型是浮点(floatdouble)才能进行浮点除法。

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

在我的示例中,我们明确地知道double / int -> double