SORU
20 Mayıs 2010, PERŞEMBE


JavaScript hassas Finansal Hesaplama. Bu Sorunlar Nelerdir?

Çapraz platform oluşturma çıkarına kodu, JavaScript ile basit bir mali uygulama geliştirmek istiyorum. Hesaplamaları bileşik faiz ve nispeten uzun ondalık sayılar dahil gerekli. JavaScript math—eğer mümkün ise bu tür yapmak için kullanırken önlemek için ne olduğunu bilmek istiyorum!

CEVAP
20 Mayıs 2010, PERŞEMBE


Muhtemelen 100, ve bütün sent tüm parasal değerleri temsil ederek ondalık değerleri ölçek gerekir. Bu problems with floating-point logic and arithmetic kaçınmaktır. JavaScript ondalık veri türü yok - yalnızca sayısal veri türü kayan nokta. Bu nedenle 25.50 dolar yerine 2550 sent olarak para işlemek için genellikle tavsiye edilir.

JavaScript düşünün:

var result = 1.0   2.0;     // (result === 3.0) returns true

Ama:

var result = 0.1   0.2;     // (result === 0.3) returns false

0.1 0.2 === 0.3 false, ama kayan nokta neyse tamsayı aritmetik verir ifadesi tam, ondalık gösterimi hata Ölçekleme önlenebilir1.

Gerçek sayılar kümesi sonsuz ise, onları yalnızca sınırlı sayıda (tam olarak 18,437,736,874,454,810,627) tam olarak kayan nokta JavaScript biçimini temsil edilebilir unutmayın. Bu nedenle diğer sayılar temsili gerçek sayı bir yaklaşım olacaktır2.


1Douglas Crockford: JavaScript: The Good Parts: Appendix A - Awful Parts (page 105).2David Flanagan: JavaScript: The Definitive Guide, Fourth Edition: 3.1.3 Floating-Point Literals (page 31).

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Breno Rises

    Breno Rises

    7 Ocak 2014
  • We've moved!

    We've moved!

    7 Ocak 2008
  • My Name Is Jeff

    My Name Is J

    26 ŞUBAT 2008