REGd中。类型转换

时间:2017-02-27 16:18:55

标签: type-conversion

我正在尝试编写一个简单的代码来给出n项谐波系列之和的输出。当我编写并执行以下代码时

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

有人可以解释这里的类型转换如何影响输出吗?

1 个答案:

答案 0 :(得分:0)

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