2014-11-13 3 views
0

나는 파이썬 소수점의 모든 내부 소수점을 인쇄하는 방법을 찾고 있는데요. 누구나 다음의 목표를 달성 할 수있는 아이디어를 가지고 있습니다. 예제 코드는 Python으로 작성되었습니다.파이썬 10 진수 모든 내부 소수점 인쇄

from decimal import * 
bits = 32 
precision = Decimal(1)/Decimal(2**bits) 
val = decimal(1078947848) 
내가 발 * 정밀도 난 결과

val * precision 
Decimal('0.2512121219187974929809570312') 

다음 얻을하지만 난 마지막 숫자 2가 내 번호의 끝이 아니다 알고 곱하면 다음 지금 무슨 일

, 그래서 나는 다음을 수행 할 수있는 저

"%.100f" % x 
'0.2512121219187974929809570312500000000000000000000000000000000000000000000000000000000000000000000000' 

그러나 모든 후행 0이 요구되지 않는 이러한 결과를 제공하고, .100f %의 크기는 주어진 비트에 의존한다. 그것은 간단한 수학이어야하고 어쩌면 내가 휴식을 제공해야하지만 주어진 비트 수에서 내부 소수점 자리수를 도출 할 수있는 방법은 무엇입니까?

답변

0

&은 후행 0을 제거 할 수 있습니다. 남은 것은 셀 수있는 "내부 소수점 자리"입니다. documentation에서

2

: 소수점 모듈은 주어진 문제에 대해 필요한만큼 클 수 있습니다 (28 곳을 디폴트) 사용자가 변경 가능한 정밀도를 가지고

당신의 수는 29 자리

입니다

길기 때문에 기본 정밀도가 너무 낮습니다. 그것을 높이십시오. 29는이 인스턴스에서 작동하지만 나중에 필요한 소수 자릿수를 모를 경우 더 큰 숫자를 선택할 수 있습니다.

from decimal import * 
getcontext().prec = 100 
bits = 32 
precision = Decimal(1)/Decimal(2**bits) 
val = Decimal(1078947848) 
print val * precision 

결과 : 또한

0.25121212191879749298095703125000 

, 당신은 normalize를 호출하는 후행 제로를 제거 할 수 있습니다.

>>> print (val * precision).normalize() 
0.25121212191879749298095703125 
+0

감사합니다. 아직 보지 못했지만, 현재 도움이됩니다. – ManIHang

관련 문제