Cypress 柏树处理小数点

Cypress 柏树处理小数点,cypress,Cypress,我试图对所有表列值求和,并且值的总和必须为1。 如图像值所示,实际值的总数为1,但显示为1.0000000000000002。 我不知道哪里出了问题。我从json文件中获取值,值在json文件中也是相同的。一定是小数点后的错误。如何处理这个问题 var sum = 0 var expectedSum=1 cy.get('td :nth-child(3) > input:visible').each(($el, index, $list) => { // var

我试图对所有表列值求和,并且值的总和必须为1。 如图像值所示,实际值的总数为1,但显示为1.0000000000000002。 我不知道哪里出了问题。我从json文件中获取值,值在json文件中也是相同的。一定是小数点后的错误。如何处理这个问题

var sum = 0 
  var expectedSum=1


  cy.get('td :nth-child(3) > input:visible').each(($el, index, $list) => {

    // var result =parseFloat($el.val())
  var result =$el.val()
  sum=Number(sum)+Number(result)
  cy.log(result)

  }).then(function()
  {
    cy.log('allocation total:'+sum)
    //assertion to check total alocation percent is 100
    expect(sum).to.equal(expectedSum)
  }) 

检查差异是否低于某个阈值

从日志上看,你的数字不超过3位小数,所以

expect(Math.abs(1-sum)).to.be.低于(0.001)

这是js作为一种语言的问题,而不是cypress,在您的情况下,您需要在测试之前对结果进行四舍五入。您可能不知道
0.3+0.2!==0.5//true
在js:)@alexnikonov在不改变测试数据的情况下有可能吗?我不这么认为,但可能是您可以使用toFixed
(0.4+0.2)。toFixed(2)==0.60
,对于您的示例,它将是
expect(sum.toFixed(3)).to.equal(expectedSum)
,这取决于您的精度需要