This question already has answers here:
Why does division result in zero instead of a decimal?
(5个答案)
7年前关闭。
我编写了以下代码,但是我遇到了问题。当我将1除以1059255时,结果将为零,因为除法的结果接近于零,并且四舍五入。
为了获得正确的结果,需要进行哪些更改?
要么
显然,您也可以将分母设置为浮点数,并且也可以使用 double 来完成。
(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