在我的代码中有一个我正在计算的参数。在许多测试运行期间,此参数应为0.由于参数是通过多次加法和减法计算的,因此它不完全为0但小于10 ^ -10。目前我正在使用:
double tol = pow(10,-10);
if (fabs(delta_U) < tol)){//whatever
}
有更优雅的方式吗?
答案 0 :(得分:4)
看起来很好。您可以直接编写公差,而不是使用pow
计算公差。
double tol = 1e-10;
答案 1 :(得分:1)
您可以用科学记数法指定浮点数:
if (fabs(delta_U) < 1e-10)
{
//whatever
}
答案 2 :(得分:1)
jpalecek是正确的 - 保存常数的计算。
我不知道计算的性质,但你可能
答案 3 :(得分:1)
将其包裹在一个函数中,以便更清楚您要执行的操作:
if (near_zero(delta_U))
{
// ...
}
其中:
inline bool near_zero(double d)
{
return fabs(d) < 1e-10;
}