У меня есть номера, которые я хочу, чтобы перейти от:быстрый способ округление до ближайшего 5/100ths
1.215145156155 => 1.2
1.368161685161 => 1.35
1.578414616868 => 1.6
(* Примечание:. Сотых место не должно быть отмечено, если она равна нулю)
Что такое Самый быстрый Способ для этого?
Это то, что я прямо сейчас, и это не достаточно быстро:
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)
Отклонитель: это выражение верно. Но тот факт, что он был пропущен, подчеркивает, почему мне это не нравится. Это слишком умно для собственного блага. – 2010-12-02 21:59:07
@Marcelo: Я считал, что мое первое выражение еще более естественное, а не умное, но я привык к тому, что люди не думают так, как я. – 2010-12-02 22:07:44