我不知道是否有像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