C++ 通过将值从int改为float,总值会发生变化,有人能解释为什么吗?请
我已经尝试了几次来确定原因,但我无法这样做,因此如果有人被确定,请让我知道C++ 通过将值从int改为float,总值会发生变化,有人能解释为什么吗?请,c++,c,algorithm,C++,C,Algorithm,我已经尝试了几次来确定原因,但我无法这样做,因此如果有人被确定,请让我知道 #include <stdio.h> int main() { int i,n=1; float div=0,sum=0,j=1; for(i=1;i<=7;i++) { j=1; for(n=1;n<=i;n++) { j=j*n; } div=i/j+div;
#include <stdio.h>
int main()
{
int i,n=1;
float div=0,sum=0,j=1;
for(i=1;i<=7;i++)
{
j=1;
for(n=1;n<=i;n++)
{
j=j*n;
}
div=i/j+div;
}
printf(" %f",div);
return 0;
}
通过运行上述程序,我们得到的结果为2.72,这是正确的。但是如果我们运行下面的代码
#include <stdio.h>
int main()
{
int i,n=1,j=1;
float div=0,sum=0;
for(i=1;i<=7;i++)
{
j=1;
for(n=1;n<=i;n++)
{
j=j*n;
}
div=i/j+div;
}
printf(" %f",div);
return 0;
}
#包括
int main()
{
int i,n=1,j=1;
float div=0,sum=0;
对于(i=1;i您不能除以整数并期望得到浮点答案,您可以按如下方式将j转换为浮点:
div = i / (float)j + div;
这将为您提供您想要的答案它在这里起了作用:
div=i/j+div;
当在第二段代码中对/
运算符求值时,两个操作数的类型均为int
,因此执行整数除法以截断任何小数部分。当j
声明为typedouble
时,执行浮点除法且不发生截断。如果这两个操作数都是如果是int
类型,则结果是一个int
,小数部分被截断。非常感谢您的回答,它确实帮助了我很多….!但是如果我们在int值附近声明(float),它会变成float值吗?同样,如果我们声明(char)在int值附近是否显示ASCIIvalue@DharnieshPR是的!非常感谢你的回答,它真的帮了我很大的忙。@DharnieshPR很高兴我能帮上忙。如果你觉得有用的话,请随意回答。
div=i/j+div;