2013-06-23 4 views
1

십여 가지 답변을 찾았지만 그 중 원하는 것은 내가 찾지 못한 것입니다. 위로 또는 아래로 반올림하고 싶지 않습니다. 숫자를 다음과 같이 반올림 할 수 있습니다. 따르십시오 :반올림하지 않고 특정 숫자로 소수 자릿수를 제거하십시오.

>>> print('%.3f' % 15.555555) 
15.556 

>>> round(15.555555, 3) 
15.666 

하지만 15.555가 필요합니다. 정규식을 사용해야합니까?

+0

Yesss, 고마워요. 내 게시물을 삭제해야합니까? – neelix

+0

나는 그걸 그냥두고 간다. – Blender

답변

5

내 솔루션은 int 학대를 포함. int은 0에 가장 가까운 수를 반올림합니다. 반올림에 영향을주기 위해 10**3을 곱합니다. int을 사용한 후 실제 결과를 얻으려면 10**3으로 나눕니다.

e 표기법을 사용하면 더 안전합니다.

int(15.55555 * 10**3)/10.0**3 
+0

'int (15.55555 * 10 ** 3)/10.0 ** 3' – dansalmo

+0

@ dansalmo : 감사합니다. 음수로 작동하므로 실제로 더 좋습니다. 왜'int'를 잊어 버렸는지 모르겠습니다. – xfix

8

건방진 솔루션 :

numstring = str(15.555555) 
num = float(numstring[:numstring.find('.')+4]) 
관련 문제