2014-08-29 2 views
1

찾고 싶은데, 숫자 (float 또는 integer)의 최하위 자리를 찾기 쉽습니다. > 1Python에서 최하위 숫자를 찾는 방법

101.2 - -> 0.2

1.1003 -> 0.0003

케이스 (10)와 같은 100, 1000 등

101 : 예를 들어

비록 조금이라도 관심이 있지만 관련성이 다소 떨어집니다.

형식에 대해 특히 신경 쓰지 않으므로 좀 더 실용적인 방식으로 결과를 식별하는 것이 더 바람직합니다. 예를 들어

:

101.2 -> 0.1^10 -1 (또는 관련 전력/지수 -1) 미세하다. 추가 컨텍스트에 대한

, 내가 할 노력하고 무엇을 :

내가 (1 최하위 자리 숫자를 선택) 31.5에 그에서 회전 할 수 있도록하려는 다수의 31.6가 있다고 할 수 있습니다. 내가 16이라는 숫자를 가지고 있다고 말하면서 15로 바꾸고 싶다. 만약 내가 100이라는 숫자를 가지고 있다면, 나는 여전히 그 값을 99로 바꾸고 싶다. 그러나 100.0을 지정하지 않고서는 아마도 그 사건을 처리 할 수있을 것이다. 1이 가장 중요하지 않은 숫자이고 1이 감소하면 0이된다. 내가 원하는 것). 이것은 차례로 데이터 범위에서 클래스 나누기를 수동으로 조작하는 것과 관련이 있습니다 (주제는 제외). This looks promising합니다 (leastSigDigit 부분)하지만, 숫자의 힘에 대한 (수학)를 참조하지 않고 숫자를 반환 (내가 너무 문자열 변환을 많이 피하기 위해 바라고 있어요) :

숙제를 표시합니다.

이것은 내가 searched stackoverflow하지만 도움이 보이지 않는다 이미 수레가있는 경우,이려고하고 있지 않다

+2

출력은 정말'3.5000000000000000000000001'이 3.5''의 근사치 무엇을해야 하는가? –

+0

int의 경우, 이것은 너무 나쁘지 않습니다 (적절한 경우 '% 10'과 '/ = 10'사용). 부동 소수점의 경우 이것은 불가능할 수 있습니다 :'.1'이'.0999999999'로 변환되면 응답이 급격히 변합니다. 나는 당신의 예'101.2 -> 0.1'을 이해하지 못한다. 그건 오타예요? – Teepeemm

+0

특정 소수 반올림 동작이 필요한 경우 ['decimal'] (https://docs.python.org/2/library/decimal.html) 모듈이 필요할 수 있습니다. – user2357112

답변

6

(I 잘못된 용어를 사용하고있는 경우는/검색 사전에 내 사과 문구) 때 와서 무엇 이었습니까 일하다. 파이썬 수레는 필요한 정보를 가지고 있지 않습니다. 1.1.0 사이에는 구분이 없으며 1.03.0으로 나누면 0.3333333333333333이됩니다 (실제로는 0.333333333333333314829616256247390992939472198486328125 제외). 사용자의 입력이 문자열 인 경우

, 당신은 매우 쉽게 작업을 수행 할 수 있습니다

def least_significant_digit_power(num_string): 
    if '.' in num_string: 
     # There's a decimal point. Figure out how many digits are to the right 
     # of the decimal point and negate that. 
     return -len(num_string.partition('.')[2]) 
    else: 
     # No decimal point. Count trailing zeros. 
     return len(num_string) - len(num_string.rstrip('0')) 
관련 문제