Tag: epsilon

Java:双机器epsilon不是最小的x,这样1 + x!= 1?

我试图在Java中确定double 机器epsilon ,使用它的定义是最小的可表示的double值x ,使得1.0 + x != 1.0 ,就像在C / C ++中一样。 根据维基百科,这台机器epsilon等于2^-52 (52是double尾数位的数量 – 1)。 我的实现使用Math.ulp()函数: double eps = Math.ulp(1.0); System.out.println(“eps = ” + eps); System.out.println(“eps == 2^-52? ” + (eps == Math.pow(2, -52))); 结果是我的预期: eps = 2.220446049250313E-16 eps == 2^-52? true 到现在为止还挺好。 但是,如果我检查给定的eps确实是最小的 x ,使得1.0 + x != 1.0 ,那么似乎有一个较小的,即根据Math.nextAfter()的前一个 double值: double epsPred […]