c++ - 通过将值从 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 ,反之亦然。但结果是不同的..
解决方案
您不能除以整数并期望得到浮点答案,您可以将 j 转换为浮点数,如下所示:
div = i / (float)j + div;
这会给你你想要的答案
推荐阅读
- r - renderPrint 和 renderPlot 之间的对象共享
- java - Spring Data:如何锁定一个事务中的一行,让其他事务等到它被释放?
- sql - ORA-00600:内部错误代码,参数:[13013]、[5001]、[1675658]、[773963968]、[10]、[773963968]、[17]、[]
- python - 如何将 WAV 音频流发送到 diaglogflow
- python - 如何将 python 函数的结果存储在机器人框架中并在报告中显示?
- javascript - 递归地用 innerHTML 替换 shadowRoot
- c# - RigidBody2D 速度,运动问题
- php - Laravel:将 var 传递给控制器以动态地从存储中检索项目
- node.js - mongodb查询所有数组元素中的文档匹配条件?
- passport.js - 无法使用带有nestjs的passport-outlook策略读取outlook配置文件