【问题标题】:Square function error - possible loss of precision平方函数误差 - 可能的精度损失
【发布时间】:2013-11-01 10:20:16
【问题描述】:

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

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

这是我到目前为止的循环,我已经要求这个循环之外的两个数字,并将除i 变量之外的所有变量设置为浮点数,将i 设置为双精度数;

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; 我试图将变量类型更改为浮点,但随后出现类似错误(浮点和双精度反转)突出显示 @987654327 中的 i @一行代码。

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

【问题讨论】:

    标签: java bluej square-root


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

      在您自己的代码中也使用双精度不是更好吗?那么你 a) 不必为类型转换而烦恼 b) 实际上成为编译器如此优雅地试图警告你的精度损失的牺牲品的可能性较小。

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

      【讨论】:

      • 我尝试将其设置为双精度,但正方形和立方体不起作用
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-04-03
      • 2017-05-11
      • 2021-02-24
      • 2016-02-24
      • 1970-01-01
      • 2011-02-11
      相关资源
      最近更新 更多