В JavaScript, числа определяются как 64-битная двойная точность. У меня есть особое применение для распределенного веб-приложения, которое будет работать только в том случае, если я могу полагаться на последовательные результаты во всех браузерах.
Несмотря на спецификацию, использующую стандарт IEEE, я, естественно, подозреваю, что могут быть небольшие различия в реализациях библиотеки математики или даже базового оборудования, что может вызвать сложные ошибки.
Есть ли какой-либо источник данных совместимости или надежный набор тестов для проверки вычислений с двойной точностью в браузере? В частности, мне также необходимо рассмотреть мобильные браузеры (обычно на основе ARM).
Уточнение -
Это вопрос совместимости браузеров. Я пытаюсь понять, можно ли полагаться на все браузеры для обработки чисел надежным, последовательным и повторяемым способом, как определено для плавающей точки IEEE. В большинстве языков это безопасное предположение, но интересно, что в браузере есть небольшая неопределенность.
Были некоторые отличные советы о том, как избежать проблем с плавающей запятой из-за отсутствия точности и ошибок округления. В большинстве случаев, если вам нужна точность, вы должны следовать этому совету!
По этому вопросу я не пытаюсь избежать проблемы, но понимаю ее. Числа с плавающей запятой по своей сути неточны по дизайну, но до тех пор, пока будет предпринята определенная забота о том, как создаются сборки, неточность может быть полностью предсказуемой и последовательной. IEEE-754 описывает это до уровня детализации, который может иметь только орган стандартов.
Я решил предложить небольшую награду, если кто-нибудь может привести,
- Подлинные данные совместимости, связанные с реализацией номеров IEEE в основных браузерах.
- Набор тестов, предназначенный для проверки реализации внутри браузеров, включая проверку правильного внутреннего использования 64-битного числа с плавающей запятой (53 бит мантиссы).
В этом вопросе я не ищу альтернативные варианты, обходные пути или способы избежать проблемы. Благодарим вас за предложения.