5

Why in some programming languages the expression in title evaluates to true? I've tried it in php, ruby and python.

Samuel Liew
  • 72,637
  • 105
  • 156
  • 238
Eimantas
  • 48,240
  • 16
  • 132
  • 164

3 Answers3

18

Please read What Every Programmer Should Know About Floating-Point Arithmetic .

ismail
  • 43,610
  • 8
  • 84
  • 94
2
double TOLERANCE < 1.0E-10;
if(fabs(0.1+0.7-0.8)< TOLERANCE)
{
    std::cout << "0.1 + 0.7 == 0.8" << std::endl;
}
else
{
    std::cout << "0.1 + 0.7 != 0.8" << std::endl;
}
Cesar A. Rivas
  • 1,359
  • 1
  • 10
  • 13
0

Because of internal interpretation of floating-point numbers, they do not exactly equal to what you have wrote.

Nickolay Olshevsky
  • 12,926
  • 1
  • 30
  • 44