涉及小数比较的精度问题

double a;

double b


a = log(x);

b = log(y);


然后比较 a   和 b 的大小;

这样写看似没有问题  ,其实有很致命的 bug, 做题的时候很容易出错。

因为 double  的小数位数是有限的,

如果  log( x)  ,log (y)  是无限循环小数,,那么精度丢失的 很厉害


所以涉及到可能有无限循环的小数比较大小的时候,

1、不要用第三变量去赋值,直接比较就行

比如 : log (x) > log(y) ?



2、用 long double 可以一定程度上缓解精度丢失的程度

(long double)a = log(x);

(long double )b = log(y);



猜你喜欢

转载自blog.csdn.net/qq_41003528/article/details/80520789
今日推荐