整数除法总是零[重复]
Posted
技术标签:
【中文标题】整数除法总是零[重复]【英文标题】:Integer division always zero [duplicate] 【发布时间】:2012-03-16 08:24:50 【问题描述】:可能重复:C programming division
可能我的问题非常简单和愚蠢。
我想存储一个部门的价值,特别是1 / x
其中x
是
整数值。
int x = 17;
double result = 1/x;
我尝试这样做,但总是得到0.000000 ...
我尝试输入固定在 x 中的值,例如 1/17
,但总是得到相同的值.. 有什么问题?
【问题讨论】:
C++. Dividing 1 by any number gives 0 【参考方案1】:你正在做整数除法。
尝试以下方法,它会按预期工作:
int x = 17;
double result = 1.0 / x;
你上面的表达式中1
的类型是int
,x
的类型是int。当您执行 int / int
时,您会得到一个 int 回复。您至少需要其中一种类型为浮点(float
或 double
)才能进行浮点除法。
与数学不同,C++ 中的除法可以指截断整数除法(您所做的)或浮点除法(我在示例中所做的)。小心这个!
在我的示例中,明确地我们拥有的是double / int -> double
。
【讨论】:
或者说清楚:double result = (double)1 / x;
@Nobody 所以你的意思是double result = 1.0 / x;
?好吧,编译器会为您执行此操作,但他可能会因为您自己不识别双重文字而嘲笑您。
@Christian Rau 这更像是一个使自动类型更加可见的教学示例。当然,作为一名程序员,我总是会写1.0
,因为它要短得多。
对于 POD 类型,所有数学运算都是在相同类型的参数上完成的。结果类型与输入参数相同。如果输入参数没有匹配的类型,那么一个参数将被提升为另一个参数的类型。以上是关于整数除法总是零[重复]的主要内容,如果未能解决你的问题,请参考以下文章