Интересно, есть ли что-то вроде eps для представления значения точности машины в C++? Могу ли я использовать его как наименьшее положительное число, которое может представлять двойник? Можно ли использовать 1.0/eps как максимальное положительное число, которое может представлять двойник? Где я могу найти eps в C++ и C стандартных библиотеках?machine precision
Спасибо и приветствую!
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 dist [i] равен 0, я бы хотел, чтобы его соответствующие значения значения [i] были доминирующими. Если есть несколько расстояний 0, я хотел бы, чтобы их значения вносили равный вклад в результат. Любая идея, как его реализовать?
Вы действительно хотите использовать самый большой номер двойной точности для веса? Там могут быть проблемы, особенно если расстояние равно 0 для более чем одного значения i. Максимальное значение двойника составляет около 10^308. Возможно, было бы лучше установить wgt_tmp на что-то вроде 10^150 при расстоянии == 0, которое (пока другие веса намного меньше этого) будет иметь эффект взятия невзвешенного значения по всем значениям, где расстояние == 0 , когда такие значения существуют, или взвешенное среднее по всем значениям, когда все расстояния отличны от нуля. –
Спасибо Крису. Это хорошие предложения. когда расстояние, хранящееся в двойном типе, не равно 0, но очень малое, будет принимать обратное превышение максимального значения, которое может представлять двойник? Если да, то как вы проверяете, достаточно ли расстояния для ограничения его взаимности? – Tim