2010-09-15 6 views
6

Eseguire questo frammentoCome aggirare la limitazione di calcolo 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"));

Si noterà che la conversione da stringa in un numero valido è bacato. Questa è una limitazione nota in javascript fino a 15 cifre (?). So che se si tratta di una limitazione JS, non possiamo fare nulla al riguardo. Ma nel mondo delle imprese ajax, avremo sempre bisogno di calcolare un sacco nel browser. E con l'avvento di node.js sul lato server, questo non è più tollerabile e la comunità ha bisogno di trovare una soluzione per aggirare, se non risolvere, questo problema una volta per tutte.

Il mio capo ha trovato un high precision Javascript calculator ma è cpu hogging. Un'altra soluzione è quella di dare quella al lato server, ma questo aumenterà la "chattiness" che è un anti-pattern. Quello che sto chiedendo è, come risolveresti questo?

Per favore correggimi Se sbaglio in una delle cose che ho affermato sopra.

+0

Sì, Javascript non funziona con numeri di precisione arbitrari, ma ci sono molte librerie per aggirare il problema. Google per "libreria bigdecimal js". – georg

risposta

1

Se JavaScript non è in grado di analizzare numeri enormi, è probabile che non sarà in grado di fare nulla di utile con loro, come i calcoli (senza la calcolatrice a uso intensivo di memoria a cui hai postato un link). Se è necessario visualizzare il numero, perché non utilizzare una richiesta Ajax? Basta provare a consolidare più operazioni da numero a stringa in un'unica richiesta.

+0

+1 L'ulteriore "chattiness" non è un pattern anti in questo caso, poiché il tuo problema è JavaScript che non supporta la grande precisione decimale per i numeri. –

Problemi correlati