首页 > 解决方案 > 通过将值从 int 更改为 float,总值会发生变化 谁能解释为什么?请

问题描述

我已经尝试了几次来确定原因,但我无法这样做,所以如果有人被确定,请告诉我..

#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;
}

实际上它是一个显示“使用 For-Loop 编写一个程序来添加以下系列的前七个术语的程序:

(1/1!)+(2/2!)+(3/3!)+…………  "      

通过运行上述程序,我们得到的结果为 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;
}

但实际上所做的是j=1从 int 变为 float ,反之亦然。但结果是不同的..

标签: c++calgorithm

解决方案


您不能除以整数并期望得到浮点答案,您可以将 j 转换为浮点数,如下所示:

div = i / (float)j + div;

这会给你你想要的答案


推荐阅读