标签: epsilon

如何在一个区间内循环遍历双精度的每个值?

在这里读到并得出结论,double的最小值(绝对值)是,1.7e-308但我的代码永远循环:

for (double d(-1.0); d <= 1.0; d+=1.7e-308)
{
}
Run Code Online (Sandbox Code Playgroud)

编辑:我想以尽可能小的增量从-1.0循环到1.0.

c++ double epsilon

3
推荐指数
1
解决办法
960
查看次数

使用没有epsilon的浮点数总是代码味道?

这个问题很简单.它与但绝对不是一个骗局有关:

大多数未修补的Tomcat Web服务器都很脆弱,谁有错?

看事物的数量惊人,可以去错浮点数(包括但不正确使用时不限于在不同的体系结构不同的结果,错误的结果,两年的拒绝服务崩溃的影响两种不同的语言等),我我想知道一个非常简单的问题:

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

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

floating-point floating-point-exceptions epsilon

1
推荐指数
1
解决办法
307
查看次数

如何确定两个双打是否几乎相等

我试图找到一些Java代码来确定两个双精度数是否几乎相等。我做了很多Google搜寻,发现了我在这里拼凑而成的点点滴滴。它开始逃脱我的地方是“相对ε”的使用。这种方法似乎是我要寻找的。我不想直接指定epsilon,而是要根据两个参数的大小使用epsilon。这是我编写的代码,我需要对其进行完整性检查。(附言:我知道数学足够危险。)

public class MathUtils
{
    // http://stackoverflow.com/questions/3728246/what-should-be-the-
    // epsilon-value-when-performing-double-value-equal-comparison
    // ULP = Unit in Last Place
    public static double relativeEpsilon( double a, double b )
    {
        return Math.max( Math.ulp( a ), Math.ulp( b ) );
    }

    public static boolean nearlyEqual( double a, double b )
    {
        return nearlyEqual( a, b, relativeEpsilon( a, b ) );
    }

    // http://floating-point-gui.de/errors/comparison/
    public static boolean nearlyEqual( double a, double b, double epsilon )
    {
        final double absA = Math.abs( a );
        final double absB …
Run Code Online (Sandbox Code Playgroud)

java math floating-point precision epsilon

1
推荐指数
1
解决办法
4756
查看次数

加法和减法后浮点数小于等于

在一系列浮点算术运算之后,是否存在一个"最佳实践",而不是与浮点数相等的比较?

我在R中有以下示例,但该问题不仅适用于R,而且适用于使用浮点的任何语言.我有一个双x = 1,我应用了一系列的加法和减法.最后x应该是一个但不是由于浮点运算(从我收集的).这是一个例子

> stop_times <- seq(0.25, 2, by = .25)
> expr <- expression(replicate(100,{
    x <- 1

    for(i in 1:10) {
      tmp <- rexp(1, 1)
      n <- sample.int(1e2, 1)
      delta <- tmp / n
      for(j in 1:n)
        x <- x - delta
      x <- x + tmp
    }

    # "correct" answer is 4  
    which.max(x <= stop_times)
  }))
> eval(expr)
  [1] 5 5 5 4 4 4 5 5 5 4 5 4 4 4 …
Run Code Online (Sandbox Code Playgroud)

floating-point r floating-accuracy epsilon inexact-arithmetic

1
推荐指数
1
解决办法
104
查看次数

给定数字的浮点分辨率

我想知道给定值附近浮点数的epsilon.

std::numeric_limits<floating_point_type>::epsilon() 提供仅适用于数字1.0,而我想要一个函数来处理任何数字.

这有什么标准库解决方案吗?如果不是 - 我应该如何实现这个功能?

c++ floating-point epsilon

1
推荐指数
1
解决办法
68
查看次数

为什么Float静态比较不需要epsilon值?

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

然后,如果值为-0.0,0.0或NAN,则返回-1,0,1.
这是什么意思-0.0?

我会期待类似的东西

 return (Math.abs(f1 - f2) - 0.001f) > 0) 
Run Code Online (Sandbox Code Playgroud)

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

java floating-point comparison epsilon

0
推荐指数
1
解决办法
1078
查看次数

为什么计算机科学中“(eps * 0.5) + 1”不大于“1”?

我正在学习Matlab,我不明白为什么(eps * 0.5) + 1不大于1。

eps

ans =

     2.220446049250313e-16

fprintf('%.52f\n', eps);
0.0000000000000002220446049250313080847263336181640625
sign(eps)

ans =

     1

% 1 means that eps is >= 0
eps >= 0

ans =

  logical

   1

eps > 0

ans =

  logical

   1

eps < 0

ans =

  logical

   0

% so, now I take half of eps
my_half_eps = eps * 0.5;
my_half_eps

my_half_eps =

     1.110223024625157e-16

fprintf('%.52f\n', my_half_eps);
0.0000000000000001110223024625156540423631668090820312
sign(my_half_eps)

ans =

     1

% half eps is positive
my_half_eps >= 0

ans …
Run Code Online (Sandbox Code Playgroud)

math floating-point precision matlab epsilon

0
推荐指数
1
解决办法
89
查看次数

确定在fortran的机器epsilon

如何在FORTRAN 90中编写一个程序来确定任何计算机中的机器epsilon?

     type ErrorOrT[M[+_], A] = EitherT[M, Throwable, A]
type ErrorOr[A] = ErrorOrT[IO, A]
Run Code Online (Sandbox Code Playgroud)

fortran epsilon fortran90

-4
推荐指数
1
解决办法
1507
查看次数