我不知道是否有像eps这样的东西代表C++中机器精度的值?我可以使用它作为double可以表示的最小正数吗?是否可以使用1.0/eps作为double可以表示的最大正数?我在哪里可以在C++和C标准库中找到eps?机器精度
感谢和问候!
UPDATE:
对于我的目的,我想计算的权重为类似反距离加权插值(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,我希望其相应的值[i]占主导地位。如果有几个距离是0,我希望他们的值对结果作出同样的贡献。任何想法如何实现它?
你真的想要使用最大的双精度数字的重量?可能会有问题,特别是如果距离为i的多个值为0。双倍的最大值约为10^308。当距离== 0时,将wgt_tmp设置为10^150可能会更好一些,(只要其他权重比这个小得多)将具有对所有值取未加权平均值的效果,其中距离== 0 ,当存在这样的值时,或当所有距离都不为零时对所有值的加权平均值。 – 2010-02-02 16:03:16
谢谢克里斯。他们是很好的建议。当存储在双重类型中的距离不是0但非常小时,它的倒数是否会超过双精度值的最大值?如果是的话,你如何检查距离是否足够小以限制其倒数? – Tim 2010-02-02 16:08:58