C++公式与指定值不匹配的结果

C++ results with formula not matching specifying value

本文关键字:不匹配 结果 C++      更新时间:2023-10-16

为什么下面不相等?

0.37024025

(sqrt(2)*M_PI/3)*(1/4)

我看到我的解决方案存在显着差异,但我所做的只是放置一个带有其背后的公式的数字。

表达式(sqrt(2)*M_PI/3)*(1/4)具有整数除法。也就是说,(1/4)总是为零,使整个表达式为零,因为它乘以该表达式。

(sqrt(2.0)*M_PI/3.0)*(1.0/4.0);

更接近您想要的,但是在比较双精度时,我会使用epsilon阈值并基于此测试两者是否"足够接近":

bool cmp(double d1, double d2, double epsilon)
{
    return std::fabs(d1 - d2) < epsilon;
}

您正在对1/4执行积分除法,这将导致0,而不是0.25。尝试分别为浮点数或双精度添加.0f.0后缀。