可比API文档中的Java`sgn`函数

时间:2018-08-09 18:48:22

标签: java

我读过

  

实现者必须确保sgn(x.compareTo(y))==   -sgn(y.compareTo(x))表示所有x和y。

https://docs.oracle.com/javase/8/docs/api/java/lang/Comparable.html上。在我看来let text = new DOMParser().parseFromString(stringHtml, 'text/html'); let textBody = text.body.firstChild; while (textBody) { alert(textBody.innerHTML); // other actions on the textBody element textBody = textBody.nextSibling; } 不是Java函数-对吗?如果sgn表示符号,就不能只说sgn吗?我知道这个问题可能很讲究,但是我想清楚一点。

1 个答案:

答案 0 :(得分:3)

same Javadocs for compareTo中,进一步描述了“ sgn”功能。

  

在前面的描述中,符号 sgn(expression)表示数学符号函数,该函数定义为返回-10或{{1 }},根据 expression 的值分别为负,零或正。

在Java中没有1方法。但是,有一种Math.signum方法返回sgndouble的符号。

作家可能会说

float

但仅引用well-known mathematical function ("sgn")

指定Math.signum(x.compareTo(y)) == Math.signum(-y.compareTo(x)) 是不必要的限制。 x.compareTo(y) == -y.compareTo(x)的合同仅注明

  

此对象小于,等于或大于

的负整数,零或正整数

对于小于,返回-1,-3,-5或-1000000都无关紧要。 compareTo返回a.compareTo(b)-1返回b.compareTo(a)很好。切换变量时的结果不必是数学相反的值。