groovyUtils = new com.eviware.soapui.support.GroovyUtils( context )
holder = groovyUtils.getXmlHolder("Product_Search#ResponseAsXml")
deliveryPrice=holder.getNodeValue("//ns1:Response/ns1:deliveryPrice")
def itemPrice=holder.getNodeValue("//ns1:Response/itemprice")
//Qty=context.testCase.getPropertyValue("quantity").toInteger()
def Qty=5
log.info(Qty)
totalPrice= itemPrice.toDouble()*Qty
log.info(totalPrice)
我的商品价格是17.99,数量是5
期望:89.95
但是获得* Tue Sep 30 08:10:59 BST 2014:INFO:89.94999999999999
由于我的断言失败了..
如何解决这个问题?
答案 0 :(得分:4)
这是由于java中的double
精度。当您使用17.99
时,double
获得的值是最接近它的双精度值(有关详细信息,请参阅primitive data type和floating point types)。如果您想要精确的十进制表示,请使用BigDecimal
instead:
totalPrice= itemPrice.toBigDecimal()*Qty
而不是:
totalPrice= itemPrice.toDouble()*Qty
希望这有帮助,