平方函数误差 - 可能损失精度

时间:2013-11-01 10:20:17

标签: java bluej square-root

我正在为我的软件开发讲座工作,并被要求编写一个for循环代码,用户被要求输入两个数字,这两个数字将是要显示的表格的上限和下限

这是用BlueJ编码的,如果有帮助(?)

这是我到目前为止的循环,我已经要求输出这个循环的两个数字并将i变量设置为浮点数,将i设置为double;

for (i = lowNum; i <= highNum; i++) {
         //find square of number
            squareNum = i * i;

         //find cube of number
            cubeNum = i * i * i;

         //find square root of number
            rootNum = Math.sqrt(i);

         //display under appropriate headings
 }

当我尝试运行它时,出现了一个编译器错误,说possible loss of precision, required: float; found: double;我试图将变量类型更改为float但是然后出现类似的错误(float和double被反转),突出显示iMath.sqrt(i);代码行中。

有谁知道如何解决这个问题?

2 个答案:

答案 0 :(得分:4)

Math.sqrt()返回一个双精度数。将其转换为浮动,如下所示:(float)Math.sqrt()

答案 1 :(得分:0)

在您自己的代码中使用double也不是更好吗?然后你a)不必为类型转换而烦恼,并且b)实际上不太可能成为编译器如此慷慨地试图警告你的精确度下降的牺牲品。

执行演员更像是告诉编译器闭嘴而不是接受它的帮助,IMO。