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
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
Etiket taahhüt sana nasıl Gıt işaret e...
Nasıl jruby iki ondalık basamak için b...
PHP: 2 ondalık bir sayı göster...
Google MAP API v3: Center & gösterilen...
Hareketli bir ondalık çift yerler üzer...