为何很多计算机编程中,建议使用作差 来判断两个数的大小?

为何不使用 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一个误差范围,就能正确的解决这个问题。


而这种编程习惯应该多多培养,以后在应变各种计算机语言时更能游刃有余。

 
评论
热度(1)
 
回到顶部