1 c++
我看到下面的函数应该返回双d的符号.但我无法理解它是如何工作的?
int sgn(double d){
return d<-eps?-1:d>eps;
}
Run Code Online (Sandbox Code Playgroud)
return d<-eps?-1:d>eps;
Run Code Online (Sandbox Code Playgroud)
这意味着:
d小于-eps,则结果为"否定"d超过eps,则结果为"正"(d>eps返回1)eps通常是一个小数字,所以我们认为-1e-5和1e-5之间的数字为"几乎为零".这种方法用于淡化计算机浮点数的一些缺陷,就像那样sin(pi)!=0.然而,它的代价是在计算中引入任意数字eps,并失去例如的属性.如果a和b为正数,a*b为正提供溢不会发生.