问题标签 [floating-point-comparison]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
440 浏览

ruby-on-rails - Minitest assert_equal 在应该相等时失败

我有一个 minitest 测试,它断言小数是否相同。想知道为什么会这样

我的断言代码:

失败:

失败:LeaveTypePolicyTest#test_case_12 [/usr/src/app/test/models/leave_type_policy_test.rb:1007] Minitest::Assertion:预期:-9.04 实际:-0.904e1

有人经历过吗?也许为什么它失败了?我有很多测试都在做类似的断言,但由于某种原因,只有这个失败了。

0 投票
1 回答
452 浏览

java - 我有一个对象的 PriorityQueue,我需要根据浮点值对其进行排序。如何为它创建一个比较器?

我已经为优先队列创建了一个比较器。

这给出了输出:ABDC 为什么没有正确排序?这是我想念的东西吗?PS 我已经尝试过使用 Float.compare() 它提供相同的输出。

0 投票
1 回答
129 浏览

tensorflow - Android、TensorFlow 和 Pytorch 中的浮点运算结果不同

我正在尝试比较 Android、Tensorflow 和 Pytorch 上的浮点数。我观察到的是,我在 Tensorflow 和 Android 上得到了相同的结果,但在 Pytorch 上却不同,因为 Android 和 Tensorflow 正在执行舍入操作。请看以下结果:

TensorFlow

PyTorch

安卓:

结果如下:

你可以看到 PyTorch 的值是不同的。我知道在这个例子中这种影响很小,但是当我们进行训练时,并且我们以不同的批次和 epoch 运行 1000 轮,这种差异可能会累积并显示出不理想的结果。谁能指出我们如何修复在三个平台上具有相同的数字。

谢谢。

0 投票
2 回答
195 浏览

c - C中的浮点算术:epsilon比较

我正在尝试使用 epsilon 比较具有双精度的值。但是,我有一个问题 - 最初我认为差异应该等于 epsilon,但事实并非如此。此外,当我尝试使用连续乘法检查二进制表示时,发生了一些奇怪的事情,我感到很困惑,因此我很感激你对问题的解释和对我的思维方式的评论

输出是:

如果我们不在数字 ( #define EPSILON 1e-10F) 之后提供“F”/“f”符号,则 C 中的数字常量被声明为双精度数,因此我在这里看不到这个问题中的转换问题。因此,我为这些特定示例创建了非常简单的程序(我知道它应该包括处理将整数部分转换为二进制数)。

直接输出:

第一个问题:为什么差异中有这么多结尾的零?为什么二进制点后的结果不同?

但是,如果我们查看计算过程和小数部分,打印出来(我只展示前几行):

第二个问题:为什么会有这么多奇怪的结尾数字?这是由于无法精确表示十进制值的浮点运算的结果吗?

分析减法,我可以看到为什么结果大于 epsilon。我遵循以下程序:

  1. 为要减去的序列准备一个零一的补序列
  2. “添加”序列
  3. 减去开头的那个,添加到最右边的位

所以:

与 的计算值比较epsilon

空格表示差异。

第三个问题:如果我不能比较等于epsilon的值,我是否需要担心?我认为这种情况表明了与 epsilon 的公差间隔是为了什么而制定的。但是,有什么我应该改变的吗?

0 投票
0 回答
72 浏览

assembly - mips比较

我的程序有错误。我并不是要求某人必须为我重写我的程序,但我们将不胜感激建设性的建议。

基本上,我想做的是看看 $f0 < $f1. 如果不是这样(或者换句话说,$f0 > $f1),则分支到“displayMSG2”否则,显示 MSG1

但是,当我运行代码时,无论我输入什么输入,它总是分支到 displayMSG2。我对 MIPS 很陌生,对高级语言最熟悉,所以我真的很想听听你的任何建议:)

0 投票
1 回答
66 浏览

rust - 默认情况下,如何告诉 rust 使用给定的库进行所有浮点比较?

我想用float_cmp::approx_eq(例如)完成所有浮点比较,但继续使用相等比较运算符==。我如何实现这一目标?

结果是: