Double具有用于比较两个double基元的Double.compare。为什么Integer没有?
我知道这是一些微不足道的代码要写,但出于好奇心而问。
编辑:我意识到整数和双精度都有compareTo。但是使用compareTo需要将int原语装箱到一个Integer对象中,这具有相当高的开销。此外,inta > intb与compare(inta,intb)不同,后者返回+1、0或-1,而前者为true/false ...
发布于 2011-08-03 03:04:03
这是Java7将解决的一个疏忽
http://download.oracle.com/javase/7/docs/api/java/lang/Integer.html#compare%28int,%20int%29
public static int compare(int x,int y)
对两个int值进行数值比较。返回的值与将由以下命令返回的值相同:
Integer.valueOf(x).compareTo(Integer.valueOf(y))
参数:x-要比较的第一个int y-要比较的第二个int返回:如果x == y,则返回0;如果xy,则返回大于0的值: 1.7
发布于 2011-08-03 02:56:59
以这种方式比较整型数是微不足道的,比较双精度型实际上要比乍看起来复杂得多。您必须处理诸如错误值之类的事情,以及诸如NaN之类的不太明显的情况。
详情请参见this question。
无论哪种方式,从Java7开始,您也将拥有这样一个用于int的方法!
发布于 2011-08-03 02:56:54
由于浮点表示中的不精确性,浮点值不一定是二进制比较的,因此,需要使用compare()运算符来比较两个浮点值,本质上确保它们之间的差异不大于(小)误差值。整数可以进行二进制比较,因此可以使用相等运算符。
https://stackoverflow.com/questions/6917077
复制相似问题