首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Signum函数

Signum函数
EN

Code Review用户
提问于 2015-08-07 15:46:59
回答 1查看 199关注 0票数 4

这就是我想模仿的Javasignum(double)方法

公共静态双signum(double d) {返回(d == 0.0双Double.isNaN(d))?d:copySign(1.0,d);}

这是我的版本

代码语言:javascript
运行
复制
public static double signum(double x) {
    return x != 0 ? x / abs(x) : 0;
}

我认为我的方法不是很容易读,但我也不认为Java方法很可读性强。我的方法可读性好吗?而且,与Java的signum方法相比,它的效率有多高?

EN

回答 1

Code Review用户

回答已采纳

发布于 2015-08-07 17:05:18

浮点除法可能是最慢的基本算术运算.对于这个简单的函数,它是完全可以避免的。我也担心除法的结果是否是±1.0。

在你试图模仿的模型中有三个半的特例,你正确地处理了其中的两个。

  • signum(Double.NaN)应该返回Double.NaN。您的版本返回Double.NaN,但通过检查它是否会这样做并不明显。
  • signum(+0.0)按预期返回+0.0。
  • signum(-0.0)返回+0.0,而不是-0.0,后者是模型行为。
  • signum(Double.POSITIVE_INFINITY)signum(Double.NEGATIVE_INFINITY)应该返回±1.0,但是函数不正确地返回Double.NaN
票数 7
EN
页面原文内容由Code Review提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://codereview.stackexchange.com/questions/99278

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档