我正在尝试使用beanshell断言执行测试。我有一个csv文件与预期的金额都是2个小数位,例如145.16,1945.21等,我希望比较它们的实际值,将从我的采样器http响应返回相同的格式。如果两者之间的差值小于0.1,即10美分/便士等,我希望我的测试用例能够通过。
我首先将初始字符串值解析为双精度、浮点数或短整型,并使用Math.abs进行比较,但当然精度并不在那里,例如,如果差值实际上是10美分(失败),那么计算结果实际上是0.999999765或类似的,因此测试用例将错误地通过。
我现在已经转到BigDecimal上了,但收效甚微。我尝试使用setScale,这使得比较更加准确。
所以我的问题是BigDecimal the way to go?创建BigDecimal后,我该如何处理它-如果我将其转换为short或float等,我又会遇到同样的问题。DecimalFormat会有帮助吗?我需要在我使用Math.abs的地方有两个小数点的值--有Math.abs的替代方案吗?
希望这是有意义的,并提前感谢。
发布于 2018-01-29 14:22:21
发布于 2018-02-01 21:38:58
仅供参考,这对我来说很管用-
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");
}https://stackoverflow.com/questions/48468019
复制相似问题