2010-09-15 20 views
6

hesaplanması sınırlamasını aşmak için nasıl geçerli bir numaraya dizesinden dönüştürme arabası olduğunu göreceksiniz bu pasajı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"));

çalıştırın. Bu, javascriptte 15 haneye kadar bilinen bir sınırlamadır (?). Bir JS sınırlaması ise, bunun hakkında hiçbir şey yapamayacağımızı biliyorum. Ancak, ajax kurumsal dünyasında, her zaman tarayıcıdaki lotları hesaplamamız gerekecek. Ve sunucu tarafındaki node.js'nin ortaya çıkmasıyla, bu artık kabul edilemez ve toplumun, çözülmediği takdirde, bu sorunu bir kez ve herkes için atlatmak için bir çözüm bulması gerekiyor.

Patronum bir high precision Javascript calculator buldu ancak cpu hogging. Bir başka çözüm ise sunucu tarafına vermektir, ancak bu bir anti-desen olan "sohbet" i arttıracaktır. Ne soruyorum, bunu nasıl çözersiniz?

Lütfen beni düzeltin Eğer yukarıda belirttiğim şeylerin herhangi birisinde yanılıyorsam.

+0

Evet, Javascript keyfi kesin sayılarla çalışmaz, ancak sorunu atlatmak için birçok kitaplık var. Google için "bigdecimal library js". – georg

cevap

1

Eğer JavaScript devasa sayıları ayrıştıramazsa, hesaplamalar gibi (bir bağlantı gönderen bellek yoğun hesap makinesi olmadan) bunlarla ilgili yararlı hiçbir şey yapamayacaktır. Numarayı görüntülemeniz gerekiyorsa, neden bir Ajax isteği kullanmıyorsunuz? Sadece çoklu sayıdan dizeye işlemlerini tek bir istekte birleştirmeye çalışın.

+0

+ 1 Sorununuz JavaScript'in sayılarla ilgili büyük ondalık kesinliklerini desteklememesi nedeniyle ek "sohbetler" bu durumda karşıt bir kalıp değildir. –