소수점 뒤의 숫자는 어떻게 구합니까?
예를 들어, 내가있는 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