问题描述
|
是否有用于JUnit或Java实践的工具,可以对边界条件测试(例如“小于”和“大于”)进行准确测试?
例如,将货币值四舍五入到最接近的美分。
测试0.005舍入到0.01很容易。
测试<0.005向下舍入不是(严格地说)。
我显然可以测试任意值(例如0.0049),但这不能保证不会舍入另一个值(例如0.00499)。是否有一个常数或任何能保证数值最接近于\“小于\”或\“大于\”的数值?
解决方法
可能但这取决于许多因素。对于货币值,应始终使用
BigDecimal
,因为它可以完全控制精度(例如double
或float
,即使是简单值也可以得出奇怪的结果)
,Math.nextAfter (0.005,0)
?
返回浮点数
与第一个参数相邻
第二个参数的方向。如果
两个参数比较相等
返回第二个参数。
http://download.oracle.com/javase/6/docs/api/java/lang/Math.html#nextAfter%28double,%20double%29