为何不使用 A = B 这种语句?
而使用
abs( A -B ) < 1 × 10^(-14)
这是为什么呢?因为在很多语言中,数字计算其实是有误差的,因为是计算机计算而非人计算。
比如Matlab语言中,
A = 0 ;
B = sin(π) ;
按理来说,A = B = 0
然而 B = 1.2246 × 10^(-16) ≠ 0
这样 A ≠ B
所以当把“AB是否相等”作为if语句 或者循环语句的条件的时候,就会出错。
正确的写法应该是 abs( A -B ) < 1 × 10^(-14)
给A 和 B一个误差范围,就能正确的解决这个问题。
而这种编程习惯应该多多培养,以后在应变各种计算机语言时更能游刃有余。