2017-02-27 83 views
0

我正在尝试编写一个简单的代码来给出n个和谐系列的总和的输出。虽然我写和执行的代码如下Regd。类型转换

for(i=1;i<=n;i++) 
    sum = sum + (1/i); 

我不能得到所需的输出。而同一代码和平工作的输出显示为我sum = 1.000000如果如下:

for(i=1;i<=n;i++) 
    sum = sum + (1/(float)i); 

实际输出:sum = 2.283334

任何人都可以请解释如何这里的类型转换影响输出?

回答

0

计算机认为(1/i)应该是一个整数。当1除以i时,小数部分被删除以获得整数值。由于1/i的结果为0.xxxx,所以当小数部分被丢弃时,您将剩下0。将i更改为浮点数将告诉它该数字应该是浮点数。如果您愿意,可以使用sum = sum + (1.0/i);获得类似的结果。

+1

感谢您的解释。它非常有帮助 – Satish