Большие цифры в проблеме C ++ в сходстве косинусаC++

Программы на C++. Форум разработчиков
Ответить Пред. темаСлед. тема
Anonymous
 Большие цифры в проблеме C ++ в сходстве косинуса

Сообщение Anonymous »

Я пишу эту функцию < /p>

Код: Выделить всё

double long CosineDistance(const vector& a,const vector& b){
double long num = 0.0, den1 = 0.0, den2 = 0.0 ;
for(int i = 0; i < a.size(); ++i) {
num+=a[i]*b[i] ;
den1+=a[i]*a[i] ;
den2+=b[i]*b[i] ;
}
return num/(sqrt(den1)*sqrt(den2));
}
< /code>
И он работает, как и с небольшими числами: < /p>
и.e. Передача {1,3,8} 
и {5,4,9} Возвращает 0,936686 (что правильно)
Теперь проект, который я строю, использует большие числа (они являются хэшковыми строками) и используют такие цифры

Код: Выделить всё

{3337682107,92015386,2479056,2478761,4153082938}

и

Код: Выделить всё

{104667454,92015386,150359366,2225484100,2479056}

он возвращает меня 1, что, я думаю, является приближением 0,968597, согласно Wolframalpha.>

Подробнее здесь: https://stackoverflow.com/questions/373 ... similarity
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «C++»