gpt4 book ai didi

java - double 型比较器

转载 作者:IT老高 更新时间:2023-10-28 20:47:17 28 4
gpt4 key购买 nike

我写了以下代码:

public class NewClass2 implements Comparator<Point>
{
public int compare(Point p1, Point p2)
{
return (int)(p1.getY() - p2.getY());
}
}

如果我假设有两个双数,3.2 - 3.1,那么差值应该是 0.1。但是,当我将数字转换为 int 时,差异最终为 0,这是不正确的。

因此我需要 compare() 来返回一个 double 值,而不是一个整数值。问题是,我的 getX 字段是 double 的。我该如何解决这个问题?

最佳答案

我建议你使用内置方法 Double.compare()。如果您需要一个使 double 值相等的范围,您可以先使用 chcek。

return Double.compare(p1.getY(), p2.gety());

if(Math.abs(p1.getY()-p2.getY()) < ERR) return 0;    
return Double.compare(p1.getY(), p2.gety());

使用 < 和 > 的问题是 NaN 在这两种情况下都会返回 false,从而导致处理可能不一致。例如NaN 被定义为不等于任何东西,甚至它本身,但是在@suihock 和@Martinho 的解决方案中,如果任何一个值为 NaN,则该方法每次都将返回 0,这意味着 NaN 等于所有东西。

关于java - double 型比较器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4242023/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com