SORU
25 ŞUBAT 2009, ÇARŞAMBA


Point matematik kırık yüzer?

0.1   0.2 == 0.3
-> false
0.1   0.2
-> 0.30000000000000004

Bu neden olur bir fikriniz var mı?

CEVAP
25 ŞUBAT 2009, ÇARŞAMBA


İkili floating point matematik böyle bir şey. Çoğu programlama dilinde, IEEE 754 standard dayanmaktadır. JavaScript Java double aynı olduğu için 64-bit kayan nokta gösterimini kullanır. En can alıcı sorunu olan rakamları temsil bu formatta bir tam sayı kere iki güç; rasyonel sayılar (gibi 0.1 olan 1/10) olan payda değil bir iki güç olamaz tam olarak temsil etti.

Standart 0.1 binary64 biçim, temsili tam olarak yazılabilir

Buna karşılık, rasyonel sayı 1/10, 0.1, tam olarak yazılabilir

  • Ondalık 0.1 ya
  • C99 bir analog 0x1.99999999999999...p-4 ... 9 bitmeyen bir dizi gösterir gösterimde hexfloat,.

Programda sabitler 0.2 0.3 de gerçek değerlerine yakın olacak. Olur yakın double 0.2 daha rasyonel sayı 0.2 ama en yakın double 0.3 birden küçük olan rasyonel sayı 0.3. 0.1 0.2 toplamı kadar 26* *rasyonel sayısından daha büyük ve sürekli bu belirtmiş olduğun kodunuzu rüzgarlar.

Kayan noktalı aritmetik konularda oldukça kapsamlı bir tedavi What Every Computer Scientist Should Know About Floating-Point Arithmetic. Daha kolay için özet bir açıklama için floating-point-gui.de bkz.

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

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • InfinityWard

    InfinityWard

    19 EYLÜL 2006
  • Juan Carlos Candela Bordera

    Juan Carlos

    4 Mart 2009
  • PoreoticsHD

    PoreoticsHD

    22 NİSAN 2010