问题标签 [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.

0 投票
4 回答
2285 浏览

vector - 使用 epsilon 值来确定游戏中的球是否不动?

我有球在四处弹跳,每次它们碰撞时,它们的速度矢量都会因恢复系数而减小。

现在我的球的 CoR 是 .80 。因此,在多次反弹后,我的球“停止”滚动,因为它们的速度变得非常小。

在哪个阶段检查速度值是否足够小以简单地将其称为零是合适的(所以我没有球对它们的微速度做出反应的疯狂抖动)。我之前在一些论坛上读过,人们有时会使用一个 epsilon 常数,一些很小的数字并检查它。

我是否应该定义一个 epsilon 常量并执行以下操作:

每次我更新球的速度和位置?这是一般的做法吗?将它放在我的 x 和 y 的 Vector 类设置器中是否合理?或者当我计算速度时我应该在我的矢量类之外做它。

另外,如果我使用浮点数作为速度向量,那么合理的 epsilon 值是多少?

0 投票
7 回答
1250 浏览

c - 浮点数的下界

C中的浮点类型有下限吗?就像整数类型有下限(int 至少为 16 位)一样?

0 投票
9 回答
53219 浏览

c# - Double.Epsilon 表示相等,大于、小于、小于或等于、大于或等于

http://msdn.microsoft.com/en-us/library/system.double.epsilon.aspx

如果您创建一个自定义算法来确定两个浮点数是否可以被视为相等,您必须使用一个大于 Epsilon 常数的值来确定两个值相等的可接受的绝对差值。(通常,差异幅度比 Epsilon 大很多倍。)

那么这真的不是一个可以用于比较的 epsilon 吗?我不太了解 MSDN 的措辞。

可以在这里的示例中用作 epsilon 吗?-浮动和双重比较最有效的方法是什么?

最后,这似乎真的很重要,所以我想确保我有一个可靠的平等实现,大于、小于、小于或等于,以及大于或等于。

0 投票
2 回答
11538 浏览

floating-point - “epsilon”真的能保证浮点计算中的任何东西吗?

为了使问题简短,假设我想计算sa / (b - c)上的表达式float

为了确保结果有意义,我可以检查是否b相等c

但我的测试表明,如果可能的话,仅仅保证有意义的结果或不提供结果是不够的。

情况1:

结果:不满足 if 条件,但表达式会产生正确的结果 100000008(至于浮点数的精度)。

案例二:

结果:满足 if 条件,但表达式产生的结果没有意义+1.#INF00

我发现检查结果而不是参数更可靠:

但是 epsilon 是为了什么,为什么每个人都说 epsilon 好用呢?

0 投票
4 回答
241 浏览

math - 如何解决一些舍入错误?

我有一个在.NET 中处理一些地理坐标的方法,并且我有一个存储坐标对的结构,如果为其中一个坐标传入 256,则它变为 0。但是,在一个特定实例中,值为大约 255.99999998 被计算出来,因此存储在结构中。当它在 ToString() 中打印时,它变成 256,这不应该发生 - 256 应该是 0。我不介意它是否打印 255.9999998,但是当调试器显示 255.99999998 时它打印 256 是一个问题。让它同时存储和显示 0 会更好。

具体来说,比较存在问题。255.99999998 足够接近 256 以至于它应该等于它。比较双打时应该怎么做?使用某种 epsilon 值?


编辑:具体来说,我的问题是我取一个值,执行一些计算,然后对该数字执行相反的计算,我需要准确地取回原始值。

0 投票
4 回答
4033 浏览

language-agnostic - 使用机器 epsilon 是否适合浮点相等测试?

这是对浮点值相等性测试的后续内容:“精度”常量是否有标准名称?.
对于相等,有一个非常相似的问题Double.Epsilon,大于、小于、小于或等于、大于或等于


众所周知,两个浮点值xy的相等性测试应该看起来更像这样(而不是简单的 =):

abs( x - y ) < epsilon   ,其中epsilon是一个非常小的值。

如何选择epsilon的值?

显然,最好为epsilon选择一个尽可能小的值,以便为相等性检查获得尽可能高的精度。

例如,.NET 框架提供了一个常数System.Double.Epsilon(= 4.94066 × 10 -324System.Double ),它表示大于零的最小正值。

但是,事实证明,这个特定值不能可靠地用作epsilon,因为:

0+ System.Double.Epsilon≠  0

1 + System.Double.Epsilon= 1 (!)

也就是说,如果我理解正确,因为该常数小于machine epsilon

→ 这是正确的吗?

→ 这是否也意味着我可以可靠地使用epsilon := machine epsilon进行相等测试?

删除了这两个问题,因为上面链接的第二个 SO 问题已经充分回答了它们。


链接到维基百科的文章说,对于 64 位浮点数(即double许多语言中的类型),机器 epsilon 等于:

2 -53或大约。0.000000000000000111(小数点后有 15 个零的数字)

→ 是否由此得出所有 64 位浮点值都保证精确到 14 位(如果不是 15 位)?

0 投票
1 回答
13400 浏览

regex - 如何在正则表达式中表示 epsilon?

教科书教我们使用 epsilon(ε)符号编写正则表达式,但是我怎样才能将该符号直接转换为代码,而不必完全修改我的正则表达式呢?

例如,我将如何编写这个正则表达式来捕获所有开始或结束a(或两者)的小写字符串。

不是 100% 确定这是正确的,但是...

((a| epsilon)[az] *a) | (a[az] *(a| epsilon))

所以一些应该匹配的字符串包括:

我只用什么来换取epsilon正确的符号,我不想修改其余表达式的任何部分。另外我想清楚一点,我实际上并没有检查 epsilon 符号,我想选择一个字符或什么都没有(不是什么都没有……epsilon)。

这样的符号存在吗?

我想要的可能吗?

0 投票
4 回答
1166 浏览

c++ - C++中的浮点算术问题有解决方案吗?

我正在做一些浮点运算并且有精度问题。对于相同的输入,两台机器上的结果值不同。我读了帖子@为什么我不能乘以浮点数?并阅读网络上的其他材料并了解它与浮点的二进制表示和机器ε有关。但是,我想检查是否有办法解决这个问题/C++ 中浮点运算的一些解决方法??我正在将一个浮点数转换为无符号短存储,并在必要时转换回来。但是,当我将其转换回 unsigned short 时,精度(到小数点后 6 位)在一台机器上保持正确,但在另一台机器上失败。

0 投票
2 回答
315 浏览

floating-point - 在没有 epsilon 的情况下使用浮点数总是有代码味道吗?

这个问题很简单。它与以下内容有关,但绝对不是:

大多数未打补丁的 Tomcat 网络服务器都容易受到攻击,谁的错?

看到浮点数可能出错的惊人数量(包括但不限于不同架构上的不同结果、错误使用时的错误结果、影响两种不同语言的两次拒绝服务崩溃等)我'我想知道一个非常简单的问题:

在没有 epsilon 的情况下使用浮点数是否总是代码气味或规格气味?

(也就是说:浮点数真的应该只用于科学计算,其余的都应该使用固定数量的精度来完成吗?)

0 投票
2 回答
1090 浏览

java - 为什么浮点静态比较不需要 epsilon 值?

在检查 Float.compare(f1,f2) 后,我发现它比较了 f1f2
并返回 -1,0,1。

如果值为 -0.0、0.0 或 NAN,则返回 -1,0,1。
-0.0 是什么意思?

我本来期望像

其中 0.001 是给定的 epsilon 值。
谢谢。