假设我们遇到这样的情况:我们有一个上限(一个float
),还有一个标志“ strict”(boolean
)。我们想浏览一个值列表(浮点数),然后对满足边界的每个值进行处理。
支票看起来像这样:
value -> strict ? (value < bound) : (value <= bound)
这不是世界末日,但是bound
和strict
的定义距离此检查较远,并且出于代码局部性的原因,最好不要发送strict
所有整个过程。
如果可能的话,仅将绑定“向上移动到下一个值”是方便的,这样我们无需检查value <= bound
,而只需检查value < boundPlusALittleBit
。
如果我们使用ints
而不是floats
,这很容易(boundPlusALittleBit = bound + 1
),但是用浮点数做到这一点并不容易。有实现这个目的的库函数吗?
答案 0 :(得分:5)
有Math.nextUp
和Math.nextDown
,对于float
和double
参数来说都是重载。
沿正无穷大方向返回与
d
相邻的浮点值。沿负无穷大的方向返回与
d
相邻的浮点值。