问题标签 [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.
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
有人经历过吗?也许为什么它失败了?我有很多测试都在做类似的断言,但由于某种原因,只有这个失败了。
java - 我有一个对象的 PriorityQueue,我需要根据浮点值对其进行排序。如何为它创建一个比较器?
我已经为优先队列创建了一个比较器。
这给出了输出:ABDC 为什么没有正确排序?这是我想念的东西吗?PS 我已经尝试过使用 Float.compare() 它提供相同的输出。
tensorflow - Android、TensorFlow 和 Pytorch 中的浮点运算结果不同
我正在尝试比较 Android、Tensorflow 和 Pytorch 上的浮点数。我观察到的是,我在 Tensorflow 和 Android 上得到了相同的结果,但在 Pytorch 上却不同,因为 Android 和 Tensorflow 正在执行舍入操作。请看以下结果:
TensorFlow
PyTorch
安卓:
结果如下:
你可以看到 PyTorch 的值是不同的。我知道在这个例子中这种影响很小,但是当我们进行训练时,并且我们以不同的批次和 epoch 运行 1000 轮,这种差异可能会累积并显示出不理想的结果。谁能指出我们如何修复在三个平台上具有相同的数字。
谢谢。
c - C中的浮点算术:epsilon比较
我正在尝试使用 epsilon 比较具有双精度的值。但是,我有一个问题 - 最初我认为差异应该等于 epsilon,但事实并非如此。此外,当我尝试使用连续乘法检查二进制表示时,发生了一些奇怪的事情,我感到很困惑,因此我很感激你对问题的解释和对我的思维方式的评论
输出是:
如果我们不在数字 ( #define EPSILON 1e-10F
) 之后提供“F”/“f”符号,则 C 中的数字常量被声明为双精度数,因此我在这里看不到这个问题中的转换问题。因此,我为这些特定示例创建了非常简单的程序(我知道它应该包括处理将整数部分转换为二进制数)。
直接输出:
第一个问题:为什么差异中有这么多结尾的零?为什么二进制点后的结果不同?
但是,如果我们查看计算过程和小数部分,打印出来(我只展示前几行):
第二个问题:为什么会有这么多奇怪的结尾数字?这是由于无法精确表示十进制值的浮点运算的结果吗?
分析减法,我可以看到为什么结果大于 epsilon。我遵循以下程序:
- 为要减去的序列准备一个零一的补序列
- “添加”序列
- 减去开头的那个,添加到最右边的位
所以:
与 的计算值比较epsilon
:
空格表示差异。
第三个问题:如果我不能比较等于epsilon的值,我是否需要担心?我认为这种情况表明了与 epsilon 的公差间隔是为了什么而制定的。但是,有什么我应该改变的吗?
assembly - mips比较
我的程序有错误。我并不是要求某人必须为我重写我的程序,但我们将不胜感激建设性的建议。
基本上,我想做的是看看 $f0 < $f1. 如果不是这样(或者换句话说,$f0 > $f1),则分支到“displayMSG2”否则,显示 MSG1
但是,当我运行代码时,无论我输入什么输入,它总是分支到 displayMSG2。我对 MIPS 很陌生,对高级语言最熟悉,所以我真的很想听听你的任何建议:)
rust - 默认情况下,如何告诉 rust 使用给定的库进行所有浮点比较?
我想用float_cmp::approx_eq
(例如)完成所有浮点比较,但继续使用相等比较运算符==
。我如何实现这一目标?
结果是: