整数除法总是为零
可能重复:
C程序devise师
可能我的问题很简单和愚蠢。 我想存储一个分区的值,特别是1 / x
,其中x
是一个整数值。
int x = 17; double result = 1/x;
我试图做到这一点,但我总是得到0.000000 ...
我尝试input一个固定的值,例如1/17
但总是得到相同的值..什么是错误的?
你正在做整数除法。
尝试以下,它会按预期工作:
int x = 17; double result = 1.0 / x;
上面expression式中的1
的types是int
,而x
的types是int。 当你做int / int
,你会得到一个int。 您至less需要其中一种浮点types( float
或double
float
)才能进行浮点型除法。
与math不同的是,C ++中的部门可以引用截断整数除法(你所做的)或浮点除法(在我的例子中是这样做的)。 小心这个!
在我的例子中,显式地我们有double / int -> double
。