用 c++实现两个 double 比较函数
时间: 2023-12-17 12:04:45 浏览: 126
以下是两个 double 比较函数的实现方式:
1. 使用 epsilon(极小值):
```c++
bool isEqual(double a, double b, double epsilon = 1e-8) {
return fabs(a - b) < epsilon;
}
bool isGreater(double a, double b, double epsilon = 1e-8) {
return (a - b) > epsilon;
}
```
在比较两个 double 类型的数值时,由于 double 类型在计算机内部存储时是有误差的,因此不能直接使用等于号(==)比较两个 double 类型的数值是否相等,而是需要在比较时设置一个极小值 epsilon,只要两个数值之间的差值小于 epsilon 就认为它们是相等的。同理,也可以使用 isGreater 函数判断一个 double 数值是否大于另一个 double 数值。
2. 使用 std::numeric_limits 里的 epsilon 函数:
```c++
#include <limits>
bool isEqual(double a, double b) {
return fabs(a - b) < std::numeric_limits<double>::epsilon();
}
bool isGreater(double a, double b) {
return (a - b) > std::numeric_limits<double>::epsilon();
}
```
std::numeric_limits<double>::epsilon() 函数返回 double 类型的最小精度值,可以用来判断两个 double 类型的数值是否相等或者大小关系。
阅读全文