2010-09-15 15 views
6

Uruchom ten fragmentJak obejść ograniczenia obliczania JavaScript

  document.write(parseFloat("999999999999999")); 
 
      document.write("<br>"); 
 
      document.write(parseFloat("555555555555555555555555.99")); 
 
      document.write("<br>"); 
 
      document.write(parseInt("9999999999999999.99")); 
 
    
 
      document.write("<br>"); 
 
      document.write(parseInt("88888888888888888",10)); 
 
      document.write("<br>"); 
 
      document.write(parseFloat("88888888888888888"));

można zauważyć, że konwersja z ciągiem na prawidłowy numer jest błędny. Jest to znane ograniczenie w javascript do 15 cyfr (?). Wiem, że jeśli jest to ograniczenie JS, to nie możemy nic z tym zrobić. Ale w świecie przedsiębiorstw ajax zawsze będziemy musieli obliczyć wiele w przeglądarce. Wraz z pojawieniem się pliku node.js po stronie serwera, nie jest to już dłużej możliwe do zaakceptowania, a społeczność musi znaleźć rozwiązanie, które pozwoli raz na zawsze rozwiązać, a nawet rozwiązać problem.

Mój szef znalazł high precision Javascript calculator, ale jest to procesor cpu. Innym rozwiązaniem jest nadanie tego serwerowi, ale to zwiększy "chattiness", który jest anty-wzorem. Pytam, jak byś to rozwiązał?

Proszę, popraw mnie Jeśli się mylę w którejkolwiek z powyższych rzeczy.

+0

Tak, JavaScript nie działa z arbitralnymi liczbami dokładności, ale istnieje wiele bibliotek do obejścia problemu. Google dla "bigdecimal library js". – georg

Odpowiedz

1

Jeśli JavaScript nie jest w stanie parsować dużych liczb, istnieje duże prawdopodobieństwo, że nie będzie w stanie zrobić z nimi nic użytecznego, jak na przykład obliczenia (bez intensywnego użycia kalkulatora, do którego zamieszczono link). Jeśli chcesz wyświetlić numer, dlaczego nie skorzystać z żądania Ajax? Po prostu spróbuj skonsolidować wiele operacji typu liczba-łańcuch w jednym żądaniu.

+0

+1 Dodatkowa "chattiness" nie jest w tym przypadku wzorcem antydepresyjnym, ponieważ Twoim problemem jest JavaScript, który nie obsługuje dużej dokładności dziesiętnej dla liczb. –

Powiązane problemy