如何获得下一个浮点值(向上或向下)?

Ric*_*ast 2 java floating-point

假设我们有这样的情况:我们有一个上限(这是一个float),以及一个标志"strict"(boolean).我们想要扫描值列表(浮点数)并对满足约束的每个值执行某些操作.

检查看起来像这样:

value -> strict ? (value < bound) : (value <= bound)
Run Code Online (Sandbox Code Playgroud)

这不是世界末日,但bound并且strict远离该检查定义,以及代码位置的原因,将是很好不发送strict一路经历的过程.

如果可能的话,将方便地移动到"下一个值"将是方便的,这样value <= bound我们就可以检查而不是检查value < boundPlusALittleBit.

如果我们使用ints而不是floats,这很容易(boundPlusALittleBit = bound + 1)但是用浮点数做这个并不简单.是否有图书馆功能实现这一目标?

rge*_*man 5

Math.nextUpMath.nextDown,既重载两个floatdouble参数.

返回d正无穷大方向附近的浮点值.

返回d负无穷大方向附近的浮点值.

  • 转换为`String`进行显示是四舍五入.它实际上添加了`Math.ulp(value)`,这是可以添加(或减去)为'value`的最小增量.使用`0.1f`,`Math.ulp`是`7.4505806E-9`. (2认同)