ben gitmek istiyorum numaraları var:Hızlı Yolu yakın 5/100ths yuvarlanacak
1.215145156155 => 1.2
1.368161685161 => 1.35
1.578414616868 => 1.6
(* Not:. O sıfırsa salise yer işaretlenmemelidir)
Bunu yapmak için en hızlı yolu nedir?
Bu şu anda ne var olduğunu ve yeterince hızlı değil:
def rounder(v):
v = str(round(float(v),2))
if len(v) == 3: v = v + str(0)
d0 = int(v[0])#ones
d1 = int(v[2])#tenths
d2 = int(v[3])#hundredths
if d2 <= 4:
return str(d0)+'.'+str(d1)
elif 4 < d2 < 7:
return str(d0)+'.'+str(d1)+str(5)
elif d2 >= 7:
if d1 != 9:
return str(d0)+'.'+str(d1+1)
if d1 == 9:
return str(d0+1)+'.'+str(0)
Numarada str() 'yi kullanırsanız, uzun ondalık uzaklaşmalıdır. (Veya uzunluğu açıkça sınırlamak için% f veya '.format() işlevini kullanın.) –
Python 2.6'da sadece 1.35 değerini girmek 1.3500000000000001 değerini de verir. Python 2.7 ve Python 3.x'deki güncellenmiş algoritma, 1.35 değerini veriyor. –
@Brandon, @Sven: Nitelikli açıklamalar için teşekkür ederiz. Onlar gerçekten cevabımı tamamlamaya yardımcı oluyorlar (üzgünüm, kendime yardım edemedim). S.S .: "Teşekkür ederim" hakiki. –