问题标签 [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.
vector - 使用 epsilon 值来确定游戏中的球是否不动?
我有球在四处弹跳,每次它们碰撞时,它们的速度矢量都会因恢复系数而减小。
现在我的球的 CoR 是 .80 。因此,在多次反弹后,我的球“停止”滚动,因为它们的速度变得非常小。
在哪个阶段检查速度值是否足够小以简单地将其称为零是合适的(所以我没有球对它们的微速度做出反应的疯狂抖动)。我之前在一些论坛上读过,人们有时会使用一个 epsilon 常数,一些很小的数字并检查它。
我是否应该定义一个 epsilon 常量并执行以下操作:
每次我更新球的速度和位置?这是一般的做法吗?将它放在我的 x 和 y 的 Vector 类设置器中是否合理?或者当我计算速度时我应该在我的矢量类之外做它。
另外,如果我使用浮点数作为速度向量,那么合理的 epsilon 值是多少?
c - 浮点数的下界
C中的浮点类型有下限吗?就像整数类型有下限(int 至少为 16 位)一样?
c# - Double.Epsilon 表示相等,大于、小于、小于或等于、大于或等于
http://msdn.microsoft.com/en-us/library/system.double.epsilon.aspx
如果您创建一个自定义算法来确定两个浮点数是否可以被视为相等,您必须使用一个大于 Epsilon 常数的值来确定两个值相等的可接受的绝对差值。(通常,差异幅度比 Epsilon 大很多倍。)
那么这真的不是一个可以用于比较的 epsilon 吗?我不太了解 MSDN 的措辞。
可以在这里的示例中用作 epsilon 吗?-浮动和双重比较最有效的方法是什么?
最后,这似乎真的很重要,所以我想确保我有一个可靠的平等实现,大于、小于、小于或等于,以及大于或等于。
floating-point - “epsilon”真的能保证浮点计算中的任何东西吗?
为了使问题简短,假设我想计算sa / (b - c)
上的表达式float
。
为了确保结果有意义,我可以检查是否b
相等c
:
但我的测试表明,如果可能的话,仅仅保证有意义的结果或不提供结果是不够的。
情况1:
结果:不满足 if 条件,但表达式会产生正确的结果 100000008(至于浮点数的精度)。
案例二:
结果:满足 if 条件,但表达式产生的结果没有意义+1.#INF00
。
我发现检查结果而不是参数更可靠:
但是 epsilon 是为了什么,为什么每个人都说 epsilon 好用呢?
math - 如何解决一些舍入错误?
我有一个在.NET 中处理一些地理坐标的方法,并且我有一个存储坐标对的结构,如果为其中一个坐标传入 256,则它变为 0。但是,在一个特定实例中,值为大约 255.99999998 被计算出来,因此存储在结构中。当它在 ToString() 中打印时,它变成 256,这不应该发生 - 256 应该是 0。我不介意它是否打印 255.9999998,但是当调试器显示 255.99999998 时它打印 256 是一个问题。让它同时存储和显示 0 会更好。
具体来说,比较存在问题。255.99999998 足够接近 256 以至于它应该等于它。比较双打时应该怎么做?使用某种 epsilon 值?
编辑:具体来说,我的问题是我取一个值,执行一些计算,然后对该数字执行相反的计算,我需要准确地取回原始值。
language-agnostic - 使用机器 epsilon 是否适合浮点相等测试?
这是对浮点值相等性测试的后续内容:“精度”常量是否有标准名称?.
对于相等,有一个非常相似的问题Double.Epsilon
,大于、小于、小于或等于、大于或等于。
众所周知,两个浮点值x和y的相等性测试应该看起来更像这样(而不是简单的 =):
abs( x - y ) < epsilon ,其中epsilon是一个非常小的值。
如何选择epsilon的值?
显然,最好为epsilon选择一个尽可能小的值,以便为相等性检查获得尽可能高的精度。
例如,.NET 框架提供了一个常数System.Double.Epsilon
(= 4.94066 × 10 -324System.Double
),它表示大于零的最小正值。
但是,事实证明,这个特定值不能可靠地用作epsilon,因为:
0+
System.Double.Epsilon
≠ 01 +
System.Double.Epsilon
= 1 (!)
也就是说,如果我理解正确,因为该常数小于machine epsilon。
→ 这是正确的吗?
→ 这是否也意味着我可以可靠地使用epsilon := machine epsilon进行相等测试?
删除了这两个问题,因为上面链接的第二个 SO 问题已经充分回答了它们。
链接到维基百科的文章说,对于 64 位浮点数(即double
许多语言中的类型),机器 epsilon 等于:
2 -53或大约。0.000000000000000111(小数点后有 15 个零的数字)
→ 是否由此得出所有 64 位浮点值都保证精确到 14 位(如果不是 15 位)?
regex - 如何在正则表达式中表示 epsilon?
教科书教我们使用 epsilon(ε)
符号编写正则表达式,但是我怎样才能将该符号直接转换为代码,而不必完全修改我的正则表达式呢?
例如,我将如何编写这个正则表达式来捕获所有开始或结束a
(或两者)的小写字符串。
不是 100% 确定这是正确的,但是...
((a| epsilon
)[az] *
a) | (a[az] *
(a| epsilon
))
所以一些应该匹配的字符串包括:
我只用什么来换取epsilon
正确的符号,我不想修改其余表达式的任何部分。另外我想清楚一点,我实际上并没有检查 epsilon 符号,我想选择一个字符或什么都没有(不是什么都没有……epsilon)。
这样的符号存在吗?
我想要的可能吗?
c++ - C++中的浮点算术问题有解决方案吗?
我正在做一些浮点运算并且有精度问题。对于相同的输入,两台机器上的结果值不同。我读了帖子@为什么我不能乘以浮点数?并阅读网络上的其他材料并了解它与浮点的二进制表示和机器ε有关。但是,我想检查是否有办法解决这个问题/C++ 中浮点运算的一些解决方法??我正在将一个浮点数转换为无符号短存储,并在必要时转换回来。但是,当我将其转换回 unsigned short 时,精度(到小数点后 6 位)在一台机器上保持正确,但在另一台机器上失败。
floating-point - 在没有 epsilon 的情况下使用浮点数总是有代码味道吗?
这个问题很简单。它与以下内容有关,但绝对不是:
大多数未打补丁的 Tomcat 网络服务器都容易受到攻击,谁的错?
看到浮点数可能出错的惊人数量(包括但不限于不同架构上的不同结果、错误使用时的错误结果、影响两种不同语言的两次拒绝服务崩溃等)我'我想知道一个非常简单的问题:
在没有 epsilon 的情况下使用浮点数是否总是代码气味或规格气味?
(也就是说:浮点数真的应该只用于科学计算,其余的都应该使用固定数量的精度来完成吗?)
java - 为什么浮点静态比较不需要 epsilon 值?
在检查 Float.compare(f1,f2) 后,我发现它比较了 f1f2
并返回 -1,0,1。
如果值为 -0.0、0.0 或 NAN,则返回 -1,0,1。
-0.0 是什么意思?
我本来期望像
其中 0.001 是给定的 epsilon 值。
谢谢。