问题标签 [epsilon]
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.
c++ - 为什么我的双精度值可以包含低于机器 epsilon 的值?
我正在使用双精度求解一个方程,我得到了-7.07649e-17
一个解,而不是0
.
我同意它足够接近,我可以说它相等,但我读过 C++ 双精度类型的机器 epsilon2^-52
大于我得到的值。
那么为什么我的值比机器 epsilon 差呢?为什么值不四舍五入为零?
这没什么大不了的,但是当我进行逻辑测试时,我的值似乎不为零......
python - 如何一次比较两个数字接近度的多个列表?
假设我有 4 个列表:
我如何 1) 比较列表,例如 A,BB,CC,DA,C 等等 2) 如果元素为 +/-0.2 则返回 true ?
我的想法是附加列表有一个 for 循环遍历所有。
但后来我被困住了,因为如果我这样做了
显然它不起作用。有没有办法在不重复的情况下遍历列表并同时进行比较?
提前致谢
qt - 您将如何高精度比较从 Cpp 端发送到 QML 函数的浮点数和双精度数?
您如何比较从 Cpp 端发送到 QML 函数的浮点数和双精度数?
如果我想像下面提到的那样进行高精度比较here
我应该如何在 Qt QML 中做到这一点?
或者,它是否在 QML 中被转换为真实的并且不需要担心它?
c - 在 C 中比较双变量的最小 EPSILON?
在我的程序中,我将特定坐标放入列表中。但是,该算法有时会将相同的坐标两次放入列表中。为了避免这种情况,我通过将 EPSILON 值与列表中所有位置的 x 和 y 值的绝对差进行比较来执行标准方法:
我有几个问题:
1)这种比较两个粒子位置的实现是否正确?
2) 我可以选择多小的 EPSILON?(粒子可以彼此非常接近)
3)有没有更快/更健壮的实现来比较粒子的位置?
java - 为什么 EPSILON 用于比较两个浮点数
我在谷歌上搜索如何查找一个数字y
是否是这个链接的力量x
并遇到这个链接
爪哇
常见的陷阱
这个解决方案是有问题的,因为我们开始使用双精度数,这意味着我们会受到精度错误的影响。这意味着,我们不应该
==
在比较双打时使用。那是因为Math.log10(n) / Math.log10(3)
可能是5.0000001
或的结果4.9999999
。Math.log()
通过使用函数而不是 可以观察到这种效果Math.log10()
。为了解决这个问题,我们需要将结果与
epsilon
.爪哇
return (Math.log(n) / Math.log(3) + epsilon) % 1 <= 2 * epsilon;
那里我不明白return (Math.log(n) / Math.log(3) + epsilon) % 1 <= 2 * epsilon;
那条线是什么意思?
为什么EPSILON
在比较浮点数时使用?
c# - 为浮点比较选择 Epsilon 值
我的团队正在使用将货币值作为 C# 浮点加倍公开的财务软件。有时,我们需要比较这些值以查看它们是否等于零,或者是否低于特定限制。当我注意到这个逻辑中的意外行为时,我很快了解到浮点双精度中固有的舍入误差(例如 1.1 + 2.2 = 3.3000000000000003)。到目前为止,我主要使用 C# 小数来表示货币值。
我的团队决定使用 epsilon 值方法来解决这个问题。本质上,当您比较两个数字时,如果这两个数字之间的差小于 epsilon,则它们被认为是相等的。我们以与以下文章中所述类似的方式实施此方法: https ://www.codeproject.com/Articles/383871/Demystify-Csharp-floating-point-equality-and-relat
我们的挑战是为 epsilon 确定一个合适的值。我们的货币价值在小数点右侧最多可以有 3 位数字(比例 = 3)。这意味着我们可以使用的最大 epsilon 是 0.0001(任何更大的数字都会被忽略)。由于 epsilon 值应该很小,我们决定将其再移一位小数点到 0.00001(为了安全起见,您可以说)。C# double 的精度至少为 15 位,所以我相信如果小数点左侧的数字小于或等于 10 位(15 - 5 = 10,其中 5 是小数点右侧的位数)。使用 10 位数字,我们可以将值表示为数十亿,最高可达 9,999,999,999.999。我们可能有数亿的数字,但我们预计不会达到数十亿,所以这个限制应该足够了。
我选择这个 epsilon 值的理由是否正确?我找到了很多讨论这种方法的资源,但我找不到很多资源可以为选择 epsilon 提供指导。
r - 加减法后的浮点数小于等于比较
在一系列浮点算术运算之后,是否存在与浮点数进行小于等于比较的“最佳实践”?
我在 R 中有以下示例(尽管该问题适用于任何使用浮点的语言)。我有一个双倍x = 1
,我在上面应用了一系列加法和减法。最后x
应该是一个,但不是由于浮点运算(据我收集)。这是示例:
一个(天真的?)解决方案是在不等式的右侧添加一些任意小的正数,如下所示
这是“最佳实践”吗?如果是,是否有关于如何选择的指南 some_arbitrary_factor
?
我的具体问题是,我有时间段(t_0, t_1], (t_1, t_2], ...
,需要找出给定观察x
的时间段。在经历了一系列浮点算术运算后,x
可能已经将边界设置为一个边界,这应该导致精确运算在哪里执行。t_i
t_i
java - 不一致的哈希码和等于java
经过研究,我仍然找不到针对我的问题的具体解决方案。我有一个使用 epsilon 的“近似等于”方法,而我的 hashCode 方法使用精确值。当我比较值时,这打破了 HashSet 的先决条件。
我找不到使 hasCode() 与我的 equals 方法一致的方法。
epsilon - 为什么使用 epsilon 的平方根作为小数
这个问题可能与语言无关,但我看到这篇文章使用 R提到使用 epsilon 的平方根作为小数:
为什么有平方根^0.5
?任何帮助表示赞赏。
c++ - machine epsilon - C++ 中的 long double
我想计算机器 Epsilon,这是使用 C++ 的不同数据类型e
给出的最小可能数:和.1 + e > 1
float
double
long double
这是我的代码:
但我得到了这个奇怪的输出:
float
和的值double
是我所期望的,但是,我无法解释这种long double
行为。
有人可以告诉我出了什么问题吗?