我正在尝试使用beanshell断言执行测试。我有一个带有预期金额的csv文件,这些金额都是2位小数,例如145.16,1945.21等,我希望将它们与我的采样器http响应以相同格式返回的实际值进行比较。如果两者之间的区别是<我希望我的测试用例通过。 0.1即10美分/便士等
我开始将初始字符串值解析为双精度或浮点数或短路并使用Math.abs进行比较,但当然准确度并不存在,例如,如果差异实际上是10美分(FAIL),那么计算实际上就是说0.999999765或类似的测试用例会错误地通过。
我现在已经转移到BigDecimal但收效甚微。我试图使用setScale,这使得比较更准确。
所以我的问题是BigDecimal要走的路?我创建它后如何处理BigDecimal - 如果我将它转换为short或float等我再次遇到同样的问题。 DecimalFormat会有帮助吗?我需要在我使用Math.abs的位置使用两个小数点的值 - 是否有Math.abs的替代?
希望有意义并提前感谢。
答案 0 :(得分:0)
答案 1 :(得分:0)
FYI最终这对我有用 -
import java.math.BigDecimal;
BigDecimal Actual_PAF = new BigDecimal("${Actual_PAF}");
BigDecimal Expected_PAF = new BigDecimal("${Expected_PAF}");
BigDecimal ActualPAFDifference = new
BigDecimal(Actual_PAF.subtract(Expected_PAF).toString());
if (ActualPAFDifference.abs() < 0.001)
{ Failure=false;
vars.put("PAFPassOrFail","PASS");}
else
{ Failure=true;
vars.put("PAFPassOrFail","FAIL");
}