当前位置: 首页 > 面试题库 >

Java双重比较

越伟泽
2023-03-14
问题内容

是否有用于双重比较的Java库?例如

public static boolean greaterThanOrEqual(double a, double b, double epsilon){
     return a - b > -epsilon;
}

我开始的每个项目最终都要重新实现,然后粘贴代码并进行测试

注意,为什么最好使用第三方JAR是IBM的建议一个很好的例子:

“如果您不知道基础测量的规模,那么使用测试“ abs(a / b-1)<epsilon”可能比简单比较差异更可靠。”

我怀疑很多人会想到这一点,并说明即使是简单的代码也可能不是最优的。


问题答案:

番石榴有DoubleMath.fuzzyCompare()



 类似资料:
  • 我想从有更多经验的人那里得到一些建议,他们在Java中使用原始的双相等。由于可能的舍入错误,对两个双和使用是不够的。 我的问题是: > 使用相对误差计算某个增量值,是否有一个通用(而不是特定于应用程序)的增量值值得推荐?请参阅下面的示例。 下面是一个通用函数,用于检查考虑相对错误的相等性。您建议的值是多少,以捕获简单操作 ,-,/,* 操作中的大部分舍入错误?

  • 问题内容: 我写了以下代码: 如果我说有两个双数,则差应为。但是,当我将数字转换为int时,其差异最终为,这是不正确的。 因此,我需要返回一个double而不是一个int。问题是,我的领域是双重的。我怎么解决这个问题? 问题答案: 您不需要返回。 该接口用于为要比较的元素建立排序。具有使用的字段与该顺序无关。 您的代码很好。 抱歉,我错了,再次阅读问题,这是您需要的:

  • 问题内容: 在另一个Bruce Eckel练习中,我编写的代码采用一种方法并更改另一个类中的值。这是我的代码: 它抛出一个错误,提示“可能会丢失精度”。 无法S为S作为呢? 提前致谢 问题答案: 是的,但是您必须指定它们是浮点数,否则将它们视为双精度数: 数字末尾的“ f”使其成为浮点数而不是双精度数。 Java不会自动将double范围缩小为float。

  • 问题内容: 这些陈述有何不同? 双虚拟= 0; 双虚拟= 0.0; 双虚拟= 0.0d; 双虚拟= 0.0D; 问题答案: 尝试过一个简单的程序(使用0和100来显示“特殊”常数和通用常数之间的差异)之后,Sun Java 6编译器将为1和2输出相同的字节码(情况3和4与2相同)就编译器而言)。 因此,例如: 编译为: 但是,我在Java语言规范中看不到任何能 保证 常量表达式的编译时扩展的东西。

  • 当执行下面的代码段时,它对double的行为不同。 为什么Double的行为与long不同?