为什么以下不相同?
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
。尝试分别为float或double添加.0f
或.0
后缀。