#include <iostream>
#include <cmath>
#include <limits>
bool AreDoubleSame(double dFirstVal, double dSecondVal)
{
return std::abs(dFirstVal - dSecondVal) < std::numeric_limits<double>::epsilon();
}
int main()
{
double dFirstDouble = 0.200001;
double dSecondDouble = 20000.1 / 100000.0;
std::cout << "AreDoubleSame: ";
if(AreDoubleSame(dFirstDouble , dSecondDouble) )
{
std::cout << "equal " << std::endl;
} else {
std::cout << "not equal" << std::endl;
}
std::cout << "==: ";
if(dFirstDouble == dSecondDouble)
{
std::cout << "equal " << std::endl;
} else {
std::cout << "not equal" << std::endl;
}
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8Y21hdGg+CiNpbmNsdWRlIDxsaW1pdHM+IAoKYm9vbCBBcmVEb3VibGVTYW1lKGRvdWJsZSBkRmlyc3RWYWwsIGRvdWJsZSBkU2Vjb25kVmFsKQp7CiAgICByZXR1cm4gc3RkOjphYnMoZEZpcnN0VmFsIC0gZFNlY29uZFZhbCkgPCBzdGQ6Om51bWVyaWNfbGltaXRzPGRvdWJsZT46OmVwc2lsb24oKTsKfQoKCmludCBtYWluKCkKewogIGRvdWJsZSBkRmlyc3REb3VibGUgPSAwLjIwMDAwMTsKICBkb3VibGUgZFNlY29uZERvdWJsZSA9IDIwMDAwLjEgLyAxMDAwMDAuMDsKCiAgc3RkOjpjb3V0IDw8ICJBcmVEb3VibGVTYW1lOiAiOwogIGlmKEFyZURvdWJsZVNhbWUoZEZpcnN0RG91YmxlICwgZFNlY29uZERvdWJsZSkgKQogIHsKICAgIHN0ZDo6Y291dCA8PCAiZXF1YWwgIiA8PCBzdGQ6OmVuZGw7CiAgfSBlbHNlIHsKICAgIHN0ZDo6Y291dCA8PCAibm90IGVxdWFsIiA8PCBzdGQ6OmVuZGw7CiAgfQogIHN0ZDo6Y291dCA8PCAiPT06ICI7CiAgaWYoZEZpcnN0RG91YmxlID09IGRTZWNvbmREb3VibGUpCiAgewogICAgc3RkOjpjb3V0IDw8ICJlcXVhbCAiIDw8IHN0ZDo6ZW5kbDsKICB9IGVsc2UgewogICAgc3RkOjpjb3V0IDw8ICJub3QgZXF1YWwiIDw8IHN0ZDo6ZW5kbDsKICB9Cn0=