我想知道显式类型转换的工作顺序以及它在哪个区域工作。在下一个示例中,我收到不同的结果。
float S = 0;
for (int i = 1; i <= 10; i++)
for (int j = 3; j <= 20; j++)
S += (i * j - 5.)/(2. * i + j / 3);
结果是 621.8933
float S = 0;
for (float i = 1; i <= 10; i++)
for (float j = 3; j <= 20; j++)
S += (i * j - 5)/(2. * i + j / 3);
S = 607.3105
float S = 0;
for (int i = 1; i <= 10; i++)
for (int j = 3; j <= 20; j++)
S += (float)(i * j - 5)/(2 * i + j / 3);
S = 621.8933
float S = 0;
for (int i = 1; i <= 10; i++)
for (int j = 3; j <= 20; j++)
S += (i * j - 5)/(2 * i + j / 3.);
S = 607.3105
显然正确的结果是 607.3105。为什么当我写(浮点数)或乘以 2 时它不提升,但当我除以 3 时它起作用?提前致谢。