当前位置: 首页 > 知识库问答 >
问题:

实数比较[重复]

宁飞宇
2023-03-14

可能重复:
比较浮点值
比较浮点值有多危险?

我不明白,为什么比较实数是编程中的一种不好的做法?当然,我理解实数可以用一定的精度来表示。你能给我解释一个不比较这类数字的重要理由吗?例子会很好,文章也是受欢迎的。事先谢谢你。

共有1个答案

宰父宾实
2023-03-14

从这个站点上的floating-accurity标记下的所有问题中,任何讨论都应该从这个问题开始:比较浮点值有多危险?

并引用了David Goldberg的“每个计算机科学家都应该知道的浮点算术”。这里有一个简短的总结。

1.精确浮点结果不可移植

请考虑以下语句

  int i = 0; double x = 1.0;
  while (x != 0.0) { x = x/2 ; i++;}

在实数中,这个计算永远不会完成,但在浮点中,它将终止。i的值取决于基础硬件。使用浮点比较会增加代码分析的难度。

3.那么为什么浮点比较是在硬件中实现的呢?

 类似资料:
  • 我有以下代码: 结果如下: 但是将的类型更改为将产生不同的输出,例如: 新的输出: 怎么会这样?为什么第一个示例代码没有输出?

  • 我发现了一个有趣的事实,但我不知道是怎么发生的。

  • 上述情况导致 上述条件返回。 为什么会这样?这些片段之间有什么区别?

  • 问题内容: 是否有用于双重比较的Java库?例如 我开始的每个项目最终都要重新实现,然后粘贴代码并进行测试。 注意,为什么最好使用第三方JAR是IBM的建议一个很好的例子: “如果您不知道基础测量的规模,那么使用测试“ abs(a / b-1)<epsilon”可能比简单比较差异更可靠。” 我怀疑很多人会想到这一点,并说明即使是简单的代码也可能不是最优的。 问题答案: 番石榴有。

  • 我正在制作一个程序,每当时间达到一个小时,它就会执行一些东西。 代码如下: 它应该输出17(因为现在是17:00),但不输出任何内容。 为什么不呢?

  • 我有以下数组列表 现在我需要比较这两个数组,并检查是否有id中的任何值存在于empIds中。如果是,我需要以布尔值true退出。我是这样做的。 但这需要很多时间。有人能帮我优化一下吗?