整数除法总是零[重复]

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的类型是intx的类型是int。当您执行 int / int 时,您会得到一个 int 回复。您至少需要其中一种类型为浮点(floatdouble)才能进行浮点除法。

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

在我的示例中,明确地我们拥有的是double / int -> double

【讨论】:

或者说清楚:double result = (double)1 / x; @Nobody 所以你的意思是double result = 1.0 / x;?好吧,编译器会为您执行此操作,但他可能会因为您自己不识别双重文字而嘲笑您。 @Christian Rau 这更像是一个使自动类型更加可见的教学示例。当然,作为一名程序员,我总是会写1.0,因为它要短得多。 对于 POD 类型,所有数学运算都是在相同类型的参数上完成的。结果类型与输入参数相同。如果输入参数没有匹配的类型,那么一个参数将被提升为另一个参数的类型。

以上是关于整数除法总是零[重复]的主要内容,如果未能解决你的问题,请参考以下文章

C整数除法和下限

无论结果如何,支持除以零的最快整数除法是啥?

在python中处理长整数除法[重复]

Numpy:如何按整数值缩放整数数组?

Java中的整数除法[重复]

Java中的整数除法[重复]