Арифметика с плавающей запятой Python и Javascript дает очень разные ответы. Что я делаю не так?

Версия Python | Версия Javascript | Технический документ

Итак, я работаю над веб-сайт для расчета рейтингов Глико для игр для двух игроков. Он включает в себя много арифметических операций с плавающей запятой (квадратные корни, экспоненты, деление и все прочие неприятные вещи), и я по какой-то причине получаю совершенно другой ответ от реализации алгоритма на Python. переведенная строка за строкой. Версия Python дает в основном ожидаемый ответ для примера, найденного в исходном техническом документе, описывающем алгоритм, но версия Javascript немного не работает.

Сделал ли я ошибку при переводе или Математика с плавающей запятой в Javascript просто менее точна?

Expected answer: [1464, 151.4]
Python answer: [1462, 155.5]
Javascript answer: [1470.8, 89.7]

Таким образом, расчет рейтинга не ТАК плохой, он точен на 99,6%, но дисперсия отличается на 2/3!

Редактировать: Люди указали, что значение по умолчанию RD в версии Pyglicko - 200. Это случай оригинального imp lementer, оставляющий в тестовом коде, я полагаю, поскольку тестовый пример выполняется на человеке с RD 200, но очевидно, что по умолчанию предполагается 350. Однако я указал 200 в моем тестовом примере в Javascript, так что это не проблема здесь.

Edit: Изменен алгоритм для использования карты / уменьшения. Рейтинг менее точен, дисперсия более точна, и то, и другое без видимой причины. Начались удары по стенам.

12
задан agf 9 August 2011 в 05:23
поделиться