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

问题描述 投票:-2回答:2

为什么以下不相同?

0.37024025

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

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

c++ equation
2个回答
3
投票

表达式(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
投票

你正在与1/4进行整体划分,这将产生0,而不是0.25。尝试分别为float或double添加.0f.0后缀。

© www.soinside.com 2019 - 2024. All rights reserved.