是否有任何JUnit或Java实践工具可以准确测试“小于”和“大于”等边界案例测试?
例如,将货币价值四舍五入到最接近的分数。 测试0.005轮到0.01是很容易的。 测试< 0.005回合不是(严格来说)。
我显然可以测试像0.0049这样的任意值,但这并不能保证像0.00499这样的另一个值不会被四舍五入。是否有一个常量或其他什么保证数值是最接近的可能表示为“小于”或“大于”正在执行的环境?
答案 0 :(得分:3)
Math.nextAfter (0.005, 0)
?
返回浮点数 与第一个参数相邻 第二个论点的方向。如果 这两个论点的比较均等 返回第二个参数。
http://download.oracle.com/javase/6/docs/api/java/lang/Math.html#nextAfter%28double,%20double%29
答案 1 :(得分:1)
可能这取决于很多因素。对于货币值,您应该始终使用BigDecimal
,因为它可以让您完全控制精度(例如double
或float
,即使对于简单值也可以给出奇数结果)