2011-11-14 2 views
14

내가 다음 문제로 실행 해요 분기-간격으로 :파이썬 - 반올림

을 감안할 때 다양한 번호와 같은 :

10.38

11.12

5.24

9.76

이미 '기본 제공'기능을 사용하여 > 10.50

11.12 - -> 11.00

5.24 -> 5.25

9.76 -> 9-75 예컨대 같은 가장 가까운 0.25 단계 :

10.38에 m의 최대?

아니면 원하는 작업을 수행하는 기능을 해킹 할 수 있습니까?

미리 감사와 안부

답변

24
>>> def my_round(x): 
... return round(x*4)/4 
... 
>>> 
>>> assert my_round(10.38) == 10.50 
>>> assert my_round(11.12) == 11.00 
>>> assert my_round(5.24) == 5.25 
>>> assert my_round(9.76) == 9.75 
>>> 
+0

* 머리 ---> 책상 * 참으로 사소한 - 나는 5am -.- 고맙습니다 pulegium 및 6502 – Daniyal

4

에는 내장 없지만, 이러한 기능은 이것은이다

def roundQuarter(x): 
    return round(x * 4)/4.0 
26

작성하는 간단하다 임의의 해상도로 반올림을 허용하는 범용 솔루션. 구체적인 경우에는 해상도로 0.25을 제공하면되지만 테스트 사례에서와 같이 다른 값도 가능합니다.

def roundPartial (value, resolution): 
    return round (value/resolution) * resolution 

print "Rounding to quarters" 
print roundPartial (10.38, 0.25) 
print roundPartial (11.12, 0.25) 
print roundPartial (5.24, 0.25) 
print roundPartial (9.76, 0.25) 

print "Rounding to tenths" 
print roundPartial (9.74, 0.1) 
print roundPartial (9.75, 0.1) 
print roundPartial (9.76, 0.1) 

print "Rounding to hundreds" 
print roundPartial (987654321, 100) 

이 출력 : paxdiablo의

Rounding to quarters 
10.5 
11.0 
5.25 
9.75 
Rounding to tenths 
9.7 
9.8 
9.8 
Rounding to hundreds 
987654300.0 
+0

아름다운 일반적인 솔루션을 감사드립니다. 주어진 솔루션을 모두 '수락 된 응답'으로 표시하려면 어떻게합니까? – Daniyal

+3

@ Daniyal : 할 수 없습니다. 내 평소 행동, 답변을 찾을 수 없다면 장점은 (상향식과 함께) 가장 낮은 직책을 가진 사람에게주고 또한 다른 사람들에게 업보를주는 것입니다. 이 경우 불행히도 나 :-)가 아닙니다. – paxdiablo

2

용액을 약간 개선 할 수있다.

def roundPartial (value, resolution): 
return round (value /float(resolution)) * resolution 

그래서 함수는 이제 "데이터 형식에 민감합니다."