将double设置为限定值,独占

  • 本文关键字:独占 double 设置 java
  • 更新时间 :
  • 英文 :


在我的一个类中有一个双精度值,它有一个上界。

问题是当我试图将此变量设置为大于其限制的值时。当发生这种情况时,我想将其设置为限制范围内最接近的值。

当我尝试的时候,尴尬的情况发生了.getLimit() - Double.MIN_VALUE

没有效果

谁能给我解释一下吗?

如果您可以使用Java 8,那么Math.nextDown函数似乎正是您正在寻找的。

如果你不能使用Java 8, Math.nextDown源代码中的相关行是:

return Double.longBitsToDouble(Double.doubleToRawLongBits(d) +
                                           ((d > 0.0d)?-1L:+1L));

如果你知道d是正的,你可以简化一下。

我想你想要Math.ulp():

  double d = 1.234566789123456789e20;
  double delta = d - Math.ulp( d );
  System.out.println( d > delta );

打印true .

最新更新