java中运算符号计算int时,结果是对int取整。计算double类型才能得到小数。

mac2024-05-28  33

小弟最近在慕课网上,学习浙江大学开设的数据结构课。

其中有一道简单的题目:分别用传统方法和秦久韶法计算下面多项式,比较所用时间

//传统 public static double polyNormal(double input) { double sum = 0.0; for (int i = 1; i < 101; i++) { sum += Math.pow(input, i) / i; } sum += 1; return sum; } //秦久韶 public static double polyNine(double input) { double sum = 0.01; for (int i = 99; i > 0; i--) { sum = sum * input + 1/ i; } sum = sum * input + 1; return sum; }

遇到问题:

秦久韶法的结果一直没有算对

出错原因:

一步一步的调试下找到了问题的所在,就是这一句

sum = sum * input + 1/ i;

其中sum是double类型,i是for循环中的int类型,0<i<100。

因此,1/i也是int类型,由于1/i的值一直小于1,取整之后就为0.

解决方案:

将1/i修改成1.0/i,这样才是double类型,值才会是随着i改变的小数。

后话:

菜菜菜,要注意基础知识!

最新回复(0)