确保c ++十进制比较正确

che*_*tao 0 c++ double

我有两个双变量.double a = 0.10000,double b = 0.1.如何确保比较(a == b)始终为真?

dwc*_*las 7

如果您正在偏执使用==doublesfloats(你应该是)你可以随时检查自己是一个小的公差范围内接近.

bool same = fabs(a-b) < 0.000001;
Run Code Online (Sandbox Code Playgroud)

  • 一般来说,恒定的容差是一个坏主意,因为相邻浮点数的数量会根据数字本身的变化而有所不同。https://randomascii.wordpress.com/2012/02/25/comparing-floating-point-numbers-2012-edition/ (2认同)