나는 시스템소수점 이하 자릿수를 반올림하지 않고 표시하려면 어떻게 제한합니까?
V = 8.836333333333339
인쇄 ('% .2f'% V)
라운딩의 어떤 종류없이 인쇄 기능에서 표시되는 소수 자릿수의 양을 제한 할 수 있도록하고 싶습니다이 코드는 v의 값을 소수점 두 자릿수까지 인쇄하지만 위 또는 아래로 반올림합니다. 어떻게하면이 반올림을 멈출 수 있습니까?
나는 시스템소수점 이하 자릿수를 반올림하지 않고 표시하려면 어떻게 제한합니까?
V = 8.836333333333339
인쇄 ('% .2f'% V)
라운딩의 어떤 종류없이 인쇄 기능에서 표시되는 소수 자릿수의 양을 제한 할 수 있도록하고 싶습니다이 코드는 v의 값을 소수점 두 자릿수까지 인쇄하지만 위 또는 아래로 반올림합니다. 어떻게하면이 반올림을 멈출 수 있습니까?
당신은 문자열로 처리 할 수 있습니다 : 당신이 수는 얼마나 오래 알고 있다면
v = 8.836333333333339
s = str(v)
print s[:s.find('.')+3]
# prints 8.83
아하 이것은 매력처럼 일했습니다. 대단히 감사합니다, 만약 제가 충분히 대답을 투표 할 수있는 충분한 담당자가 있다면, 나는 한 번 충분할 것입니다 : –
진수 모듈을 사용하는 방법에 대한 방법 :
>>> 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
>>>
파이썬 셸에서이 코드를 실행하면 여전히 마지막 숫자가 반올림됩니다. 또한 우리가 다른 버전의 Python을 가지고 있기 때문에 이것이 맞는지는 모르겠지만 Decimal이라는 단어의 괄호 세트를 추가하여 세 가지 예제 모두를 끝내야했습니다. –
, 당신은 쉽게 문자열 슬라이스와 함께이 작업을 수행 할 수 .
>>> 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
이것은 또한 유용했습니다, 나는 타입 변환에 대해 더 많이 보게 될 것입니다, 고맙습니다. :) –
귀하의 경우에 특정 비트,하지만 당신은 또한 잘라야 int
을 사용할 수 있습니다 : 문자열 find
기반의 접근 방식에 비해
>>> print(int(v*100)/100.0)
8.83
그것은 시간을 약 3 배 빠른에서 (310 NS 대 925 NS) .
당신은 ** 당신의보기에 ** 무엇을보고 싶습니까? 8.83은 반올림되며, 8.84는 반올림됩니다. 지구상에서 "반올림 중지"란 무엇을 의미합니까? 즉, 8.83 또는 8.84를보고 싶지 않으므로 **보고 싶은 것은 무엇입니까? –
정말 죄송합니다. 여기에 내가 물어 보려던 것이있다. v = 8.836333333333339 print ('% .2f'% v) 8.84가 출력된다. 어떻게 8.83을 유지하겠습니까? –
@TimPeters : 그가 묘사 한 것은 절단이라고 생각합니다. 8.843과 8.848은 모두 8.84가되어야합니다. –