Java双epsilon

non*_*ion 18 java floating-point

我目前需要一个类型的epsilondouble(首选是java库中的常量而不是自己的实现/定义)

至于我可以看到DoubleMIN_VALUEMAX_VALUE静态成员.

为什么没有EPSILON

epsilon<double>是什么?

是否有任何差异std::numeric_limits< double >::epsilon()

Epsilon:1和大于1的最小值之间的差异,可以表示数据类型.

Sma*_*n2k 18

我认为你的意思是价值错误意义上的epsilon.就是这个.

如果是这样,那么在Java中它被称为ULP(最后一个单位).您可以使用java.lang.Math包和Math.ulp()方法找到它.在这里查看javadocs.

该值不会存储为静态成员,因为它会根据您所关注的双精度而有所不同.

编辑:根据OP现在在问题中对epsilon的定义,值为1.0的双倍的ULP是2.220446049250313E-16,表示为double.(即返回值Math.ulp(1.0).)

  • 感谢您回答您理解的问题. (2认同)
  • 七分钟前,OP 编辑​​了他们的问题,将“epsilon”定义为“1 与该数据类型可表示的大于 1 的最小值之间的差值”。该值是恒定的。 (2认同)