#include <iostream>
#include <type_traits>
#include <limits>
template <typename T, typename = typename std::enable_if<std::is_floating_point<T>::value>::type>
bool IsEqualZero(T value)
{
if (value > -std::numeric_limits<T>::epsilon() && value < std::numeric_limits<T>::epsilon())
{
std::cout << "value:" << value << ", epsilon:" << std::numeric_limits<T>::epsilon() << ", true" << std::endl;
return true;
}
std::cout << "value:" << value << ", epsilon:" << std::numeric_limits<T>::epsilon() << ", false" << std::endl;
return false;
}
int main()
{
IsEqualZero<float>(0.000000119210);
IsEqualZero<float>(0.0000001);
IsEqualZero<float>(0.000001);
IsEqualZero<float>(0.00001);
IsEqualZero<float>(0.0001);
IsEqualZero<float>(0.001);
IsEqualZero<float>(0.01);
IsEqualZero<float>(0.1);
IsEqualZero<double>(0.000000000000000222047);
IsEqualZero<double>(0.000000000000000222046);
IsEqualZero<double>(0.000000000000000222045);
IsEqualZero<double>(0.00000000000000001);
IsEqualZero<double>(0.0000001);
IsEqualZero<double>(0.000001);
IsEqualZero<double>(0.00001);
IsEqualZero<double>(0.0001);
IsEqualZero<double>(0.001);
IsEqualZero<double>(0.01);
IsEqualZero<double>(0.1);
return 0;
}
C++ 浮点数与0比较
最新推荐文章于 2025-03-26 20:22:17 发布