This question already has answers here:
Why does division result in zero instead of a decimal?

(5个答案)


7年前关闭。




我编写了以下代码,但是我遇到了问题。当我将1除以1059255时,结果将为零,因为除法的结果接近于零,并且四舍五入。
for(x = 2 ; x <= 1059255; x++)
{
    y += (1/1059255) * x;
}

为了获得正确的结果,需要进行哪些更改?

最佳答案

这是整数除法。如果将x / y除以x小于y,则结果将始终为0。将这些数字之一转换为浮点数。

这里有一些可能性:

y += (1.0f/1059255) * x; // float literal divide by integer, this will work

要么
y += (static_cast<float>(1)/1059255) * x; // casting integer literal to float, this works too

显然,您也可以将分母设置为浮点数,并且也可以使用 double 来完成。

09-10 01:40