2015-10-27 28 views
6

Meteor'ı kullanıyorum. Javascript'i hem sunucuda hem de istemcide kullanır. Ben Math.sin(356644061314425) * 10000 çalıştırdığınızdaMath.sin() sunucu/istemci üzerinde farklı sonuçlar veriyor?

i olsun: istemci/tarayıcı/app

bu neden üzerinde

sunucuda

-9986.46139381927 ve

-9986.46115497749? Bunu nasıl önleyebilirim? EDIT: Önerilen yinelenen sorular derece/radyan anlamına gelir. Bence benimki daha çok çalışma zamanı problemidir.

+0

3 ondalık basamağı göstermek için ayarlayın;) –

+0

muhtemelen float kullanıyor. Biliyorsun, yüzen bir noktada kesin değil. –

+0

Olası yinelenen [Yanlış sonuçlar ile Olağandışı Matematik?] (Http://stackoverflow.com/questions/8691800/unusual-math-with-incorrect-results) –

cevap

6

"Bunu nasıl önleyebilirim?" Cevabını düşünüyorum. "yapamazsın".

"Neden bu?" Math.sin'in javascript uygulamasının belirlenmemiş olmasıdır.

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

Özellikle "sin (x) x sinüsü bir uygulama bağımlı yaklaşım döndürür. Argüman radyan cinsinden ifade edilir." Bkz (benim italiklerim).

Ancak, denemelerim modern tarayıcıların şu anda yalnızca iki uygulamadan birini kullandığını ve Chrome'un diğer tarayıcılardan farklı (ve görünüşte daha doğru) olduğunu gösteriyor.

İlgili konular