2015-10-27 2 views
6

Я использую Метеор. Он использует Javascript как на сервере, так и на клиенте.Math.sin() дает разные результаты на сервере/клиенте?

Когда я бегу Math.sin(356644061314425) * 10000 я получаю:

-9986.46139381927 на сервере и

-9986.46115497749 на клиенте/браузере/приложение

Почему это? Как я могу это предотвратить?

EDIT: Предлагаемые дубликаты вопросов относятся к градусам/радианам. Я считаю, что моя проблема больше времени.

+0

Установите для отображения 3 десятичных знаков;) –

+0

возможно использует поплавки. Знаете, поплавки в определенный момент не точны. –

+0

Возможная дубликатка [Необычная математика с неправильными результатами?] (Http://stackoverflow.com/questions/8691800/unusual-math-with-incorrect-results) –

ответ

6

Я думаю, что ответ на вопрос «Как это предотвратить?» «вы не можете».

Ответ на вопрос «Почему это?» что реализация javascript Math.sin не определена.

См http://www.ecma-international.org/ecma-262/5.1/#sec-15.8.2.16

В частности «Sin (х) Возвращает зависящая от реализации приближения синуса х. Аргумент выражается в радианах.» (курсив мой).

Но мои эксперименты показывают, что современные браузеры в настоящее время используют только одну из двух реализаций, причем Chrome отличается (и, по-видимому, более точным, чем) другими браузерами.

Смежные вопросы