整数除法总是零

Integer division always zero

本文关键字:除法 整数      更新时间:2023-10-16

可能重复:
C编程部门

也许我的问题很简单也很愚蠢。我想存储除法的值,特别是1 / x,其中x是整数值。

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

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

您正在进行整数除法。

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

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

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

与数学不同,C++中的除法既可以指截断整数除法(您所做的),也可以指浮点除法(我在示例中做的)。小心!

在我的例子中,明确地说,我们有double / int -> double