c++ - 机器精度

标签 c++ c precision interpolation

不知C++中是否有eps之类的表示机器精度值的?我可以将它用作 double 可以表示的最小正数吗?是否可以使用 1.0/eps 作为 double 可以表示的最大正数?在 C++ 和 C 标准库中哪里可以找到 eps?

谢谢和问候!


更新:

出于我的目的,我想计算一个权重作为距离的倒数,例如反距离加权插值 (http://en.wikipedia.org/wiki/Inverse_distance_weighting)。

double wgt = 0, wgt_tmp, result = 0;
for (int i = 0; i < num; i++)
{
   wgt_tmp = 1.0/dist[i];
   wgt += wgt_tmp;
   result += wgt_tmp * values[i];
}
results /= wgt;

但是距离可以为 0,我需要使权重适合计算。如果只有一个距离 dist[i] 是 0,我希望它对应的值 values[i] 是显性的。如果有几个距离为 0,我希望它们的值对结果的贡献相同。知道如何实现吗?

最佳答案

使用 #include <limits>你有

小正值 = std::numeric_limits<float>::denorm_min()

最大的正值 = std::numeric_limits<float>::max()

显然这也适用于其他类型。

参见 numeric_limits

不,最小正值的倒数不等于最大值。

关于c++ - 机器精度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2185296/

相关文章:

c++ - 在 C++ 中 ToString ("00.00000") 的等价物是什么?

c++ - MFC如何通知文件改变(并显示*号)

编译 sqlite 合并以获取用户身份验证会引发错误 C2129 和 C1083

c - C中的输入切换

c++ - 补偿 double/float 不准确

python - 识别 float 的实际精度

c++ - 函数内定义的空指针

c - 我的字符频率程序似乎有一个无限循环

c - 使用 C 语言编程,使用 pow 函数

c++ - 在客户端使用 boost 管理 1000+ 连接