当前位置:  开发笔记 > 编程语言 > 正文

令人困惑的退货声明

如何解决《令人困惑的退货声明》经验,为你挑选了3个好方法。

我无法准确理解IF语句正在做什么,从我可以看到它检查变量x是否等于int 0.如果这是返回true变量的ABSOLUTE值y...这是当我丢失情节时,为什么return语句会继续包含<= ESPILON?当然这意味着小于或等于epsilon的价值?如果是这样的话怎么样?如果它不意味着那么它是什么意思?

(JAVA代码)

final double EPSILON = 1E-14;
if (x == 0)
    return Math.abs(y) <= EPSILON;

coppro.. 12

浮点数学本质上是不准确的,所以不是测试等价(这总是一个坏主意),而是开发人员选择了一个小数字(在这种情况下为1x10 ^ -14)作为接近零的可接受容差.return语句返回一个比较,所以这将采取y的绝对值,并且当且仅当它足够接近零时才返回true,其中EPSILON定义了足够接近.



1> coppro..:

浮点数学本质上是不准确的,所以不是测试等价(这总是一个坏主意),而是开发人员选择了一个小数字(在这种情况下为1x10 ^ -14)作为接近零的可接受容差.return语句返回一个比较,所以这将采取y的绝对值,并且当且仅当它足够接近零时才返回true,其中EPSILON定义了足够接近.



2> Airsource Lt..:

如果y的绝对值<= EPSILON,则返回true,否则返回false.在return语句之前计算<=.这段代码是等效的:

if(x == 0)
{
   boolean ret = Math.abs(y) <= EPSILON;
   return ret;
}

代码不是简单地从左到右阅读.一个更简单的例子是

int x = 3 + 4 * 5;

在评估之后,x是23,而不是35.评估是3 +(4*5),而不是(3 + 4)*5,因为*具有比+更高的优先级.原始示例中的return语句具有非常低的优先级.所有运算符如+, - ,<,> =都会在它之前进行评估.



3> Jedidja..:

整个表达方式

Math.abs(y) <= EPSILON

应首先评估,这意味着该函数将返回一个布尔值(true/false).话虽如此,如果

x != 0

然后我不确定会得到什么.

推荐阅读
虎仔球妈_459
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有