[python] 소수점 이하 숫자를 얻는 방법?

소수점 뒤의 숫자는 어떻게 구합니까?

예를 들어, 내가있는 5.55경우 어떻게 얻을 수 .55있습니까?



답변

당신을위한 쉬운 접근 :

number_dec = str(number-int(number))[1:]


답변

5.55 % 1

이것은 부동 소수점 반올림 문제에 도움이되지 않습니다. 즉, 다음을 얻을 수 있습니다.

0.550000000001

아니면 당신이 기대하는 0.55에서 약간 떨어져 있습니다.


답변

modf 사용 :

>>> import math
>>> frac, whole = math.modf(2.5)
>>> frac
0.5
>>> whole
2.0


답변

이건 어떤가요:

a = 1.3927278749291
b = a - int(a)

b
>> 0.39272787492910011

또는 numpy를 사용하여 :

import numpy
a = 1.3927278749291
b = a - numpy.fix(a)


답변

decimal표준 라이브러리 의 모듈을 사용하면 원래 정밀도를 유지하고 부동 소수점 반올림 문제를 방지 할 수 있습니다.

>>> from decimal import Decimal
>>> Decimal('4.20') % 1
Decimal('0.20')

주석의 모든 메모 처럼 먼저 native float를 문자열 로 변환해야합니다 .


답변

Modulo 시도 :

5.55%1 = 0.54999999999999982


답변

받아 들여지는 대답과 비슷하게 문자열을 사용하는 더 쉬운 접근 방식은

def number_after_decimal(number1):
    number = str(number1)
    if 'e-' in number: # scientific notation
        number_dec = format(float(number), '.%df'%(len(number.split(".")[1].split("e-")[0])+int(number.split('e-')[1])))
    elif "." in number: # quick check if it is decimal
        number_dec = number.split(".")[1]
    return number_dec