关于浮点运算误差问题,求教。
程序代码:
#include <stdio.h> int main(void) { float a,b,c,d; scanf("%lf %lf", &a, &b); c = 0.999999999; d = 1.0; if( c==d ){ printf(" c d 竟然真的相等!\n"); } if( a==b ){ printf(" a b 竟然真的相等!\n"); } else { printf(" a b \(^o^)/不相等!\n"); } return 0; }
我的a b 值和c d是相等的,可最后输出的是c d相等,a b不相等,为什么会有这种差别呢?