【发布时间】:2016-05-02 12:22:09
【问题描述】:
我需要添加一系列分数。我在添加分数时查看了其他 for 循环,但没有遇到我遇到的问题。分数分母每次增加 1.0,直到加起来 1.0/1.0 + 1.0/2.0 + .... + 1.0/ 150,000,000.0。我的代码通过添加分数来为我工作,直到我在我的 for 循环中超过 10,000,000。一旦我说 15,000,000,它就不会打印任何东西,程序会继续运行。我犯了什么错误?为什么超过一定数量时不打印答案?
代码如下:
float sum = 0;
float numerator = 1;
float denominator = 1;
for(float i = 1; i <= 10000000; i++)
{
sum = ((float)numerator/denominator) + sum;
denominator++;
}
System.out.println("The sum is " + sum);
【问题讨论】:
-
尝试将精度更改为双精度(使用
double而不是float)。并将for循环中的float更改为int -
我必须像上课一样使用浮点数。对于作业,我必须“使用适当的数据类型来获得 32 位浮点”。
-
好的,但是应该允许您将
i更改为int。 -
就像我说的,
float精度是有限的。也许这就是你的任务的重点? -
@Dunno 10000000 当您考虑现代 CPU 每秒可以执行的操作数时,这根本不是一个大数字。我的机器花了 35 毫秒来执行循环。您甚至需要大几个数量级的迭代计数才能考虑“等待”因素。仅供参考:)
标签: java for-loop printing add fractions