SORU
18 Ocak 2009, Pazar


Sınırlayıcı iki ondalık işaret eder

A 13.95 yuvarlak olmasını istiyorum

>>> a
13.949999999999999
>>> round(a, 2)
13.949999999999999

round işlevi beklediğim gibi çalışmıyor.

CEVAP
18 Ocak 2009, Pazar


Tüm numaraları edemiyor temsil edilmesi kayan nokta sayıları ile eski sorun çalıştırıyorsunuz. Komut satırına sadece bellekten tam kayan nokta şeklinde gösteriyor. Kayan nokta yuvarlak sürüm numarası ile aynıdır. Bilgisayarlar ikili olduğu bir tamsayı, kayan nokta sayıları saklıyorlar ve sonra 13.95 125650429603636838/(2**53) benzer bir biçimde temsil edilecek iki güç bölün. Çift duyarlıklı sayılar hassas ve düzenli yüzen 53 bit (16 basamaklı), 24 bit (8 haneli) hassasiyet var. floating point in python uses double precision değerleri saklamak için.

örneğin

  >>>125650429603636838/(2**53)
  13.949999999999999

  >>> 234042163/(2**24)
  13.949999988079071

  >>> a=13.946
  >>> print(a)
  13.946
  >>> print("%.2f" % a)
  13.95
  >>> round(a,2)
  13.949999999999999
  >>> print("%.2f" % round(a,2))
  13.95
  >>> print("{0:.2f}".format(a))
  13.95
  >>> print("{0:.2f}".format(round(a,2)))
  13.95
  >>> print("{0:.15f}".format(round(a,2)))
  13.949999999999999

Eğer para birimi olarak yalnızca iki ondalık basamak sonra eğer dolar değil Cent daha iyi seçenekleri kullanın tamsayılar ve mağaza değerler bir çift var ve o zaman 100 dolar dönüştürmek için bölün. Veya decimal gibi sabit nokta bir sayı kullanın

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

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Mismag822 - The Card Trick Teacher

    Mismag822 -

    18 EKİM 2008
  • Ordetta Price

    Ordetta Pric

    12 EYLÜL 2011
  • sinumatic

    sinumatic

    19 Aralık 2006