答案 0 :(得分:2)
正如我在上面的第一句话中所述,问题是精度。格式化为显示小数点后16位时,请与您的工作表一起看看。
实际上应该是@ViewChildren('inputs') _inputs
setFocus(i){
this._inputs.toArray()[i].nativeElement.focus()
}
的有问题的单元格是0.00
,并且格式公式正确地将其着色为红色!
为什么?通常,在使用浮点数时,精度受存储的数字内部长度的限制,通常以64位为准。因此它们并不精确。
这意味着对浮点数进行精确比较是危险的。如您的示例所示,如果您不了解浮点数的行为,结果可能会令人惊讶。您可以在线搜索更多详细信息。问题的关键是您需要测试差异是否大于或小于某个较小的数字,例如0.0000001。对于“平等”的可行测试为0.0000000000000071054
。
解决方法:例如,您最简单的情况是将第23行的K列中的公式替换为abs(a-b) < 0.00000001
。然后,您的条件公式将在所有情况下都可以正常工作。