2014-04-15 3 views
0

나는 시스템소수점 이하 자릿수를 반올림하지 않고 표시하려면 어떻게 제한합니까?

V = 8.836333333333339

인쇄 ('% .2f'% V)

라운딩의 어떤 종류없이 인쇄 기능에서 표시되는 소수 자릿수의 양을 제한 할 수 있도록하고 싶습니다

이 코드는 v의 값을 소수점 두 자릿수까지 인쇄하지만 위 또는 아래로 반올림합니다. 어떻게하면이 반올림을 멈출 수 있습니까?

+0

당신은 ** 당신의보기에 ** 무엇을보고 싶습니까? 8.83은 반올림되며, 8.84는 반올림됩니다. 지구상에서 "반올림 중지"란 무엇을 의미합니까? 즉, 8.83 또는 8.84를보고 싶지 않으므로 **보고 싶은 것은 무엇입니까? –

+0

정말 죄송합니다. 여기에 내가 물어 보려던 것이있다. v = 8.836333333333339 print ('% .2f'% v) 8.84가 출력된다. 어떻게 8.83을 유지하겠습니까? –

+0

@TimPeters : 그가 묘사 한 것은 절단이라고 생각합니다. 8.843과 8.848은 모두 8.84가되어야합니다. –

답변

1

당신은 문자열로 처리 할 수 ​​있습니다 : 당신이 수는 얼마나 오래 알고 있다면

v = 8.836333333333339 
s = str(v) 
print s[:s.find('.')+3] 

# prints 8.83 
+0

아하 이것은 매력처럼 일했습니다. 대단히 감사합니다, 만약 제가 충분히 대답을 투표 할 수있는 충분한 담당자가 있다면, 나는 한 번 충분할 것입니다 : –

0

진수 모듈을 사용하는 방법에 대한 방법 :

>>> help(Decimal.quantize) 
Help on method quantize in module decimal: 

quantize(self, exp, rounding=None, context=None, watchexp=True) unbound decimal.Decimal  
method 
    Quantize self so its exponent is the same as that of exp. 

Similar to self._rescale(exp._exp) but with error checking. 


>>> from decimal import * 
>>> v = 8.834333333333339 
>>> print Decimal(v).quantize(Decimal('0.01')) 
8.83 
>>> print Decimal('8.8663').quantize(Decimal('0.01')) 
8.87 
>>> print Decimal('8.863').quantize(Decimal('0.01')) 
8.86 
>>> 
+0

파이썬 셸에서이 코드를 실행하면 여전히 마지막 숫자가 반올림됩니다. 또한 우리가 다른 버전의 Python을 가지고 있기 때문에 이것이 맞는지는 모르겠지만 Decimal이라는 단어의 괄호 세트를 추가하여 세 가지 예제 모두를 끝내야했습니다. –

1

, 당신은 쉽게 문자열 슬라이스와 함께이 작업을 수행 할 수 .

>>> v = 8.836333333333339 
>>> x = str(v) # get string representation of 'v' 
>>> x 
'8.836333333333339' 

>>> y = x[0:4] # every character in 'x' between 0 and 4 but not including 4 
>>> y 
'8.83' 

>>> v = float(y) # you can even convert it back to a number if you want 
>>> v 
8.83 
+0

이것은 또한 유용했습니다, 나는 타입 변환에 대해 더 많이 보게 될 것입니다, 고맙습니다. :) –

0

귀하의 경우에 특정 비트,하지만 당신은 또한 잘라야 int을 사용할 수 있습니다 : 문자열 find 기반의 접근 방식에 비해

>>> print(int(v*100)/100.0) 
8.83 

그것은 시간을 약 3 배 빠른에서 (310 NS 대 925 NS) .

관련 문제