반응형
숫자를 정수와 소수 부분으로 나누기
정수 부분과 소수 부분 과 같이 숫자 1234.5678
를 두 부분 으로 나누는 비단뱀적인 방법이 (1234, 0.5678)
있습니까?
사용 math.modf
:
import math
x = 1234.5678
math.modf(x) # (0.5678000000000338, 1234.0)
유명하지 않은 내장 함수를 사용할 수 있습니다. divmod :
>>> s = 1234.5678
>>> i, d = divmod(s, 1)
>>> i
1234.0
>>> d
0.5678000000000338
>>> a = 147.234
>>> a % 1
0.23400000000000887
>>> a // 1
147.0
>>>
정수 부분을 실수가 아닌 정수로 사용하려면 int(a//1)
대신 사용하십시오. 단일 구절에서 튜플을 얻으려면 :(int(a//1), a%1)
편집 : float 숫자의 소수 부분은 근사치 이므로 사람처럼 표현하려면 소수 라이브러리 를 사용해야합니다.
intpart,decimalpart = int(value),value-int(value)
양수에 대해 작동합니다.
이 변형을 사용하면 원하는 정밀도를 얻을 수 있습니다.
>>> a = 1234.5678
>>> (lambda x, y: (int(x), int(x*y) % y/y))(a, 1e0)
(1234, 0.0)
>>> (lambda x, y: (int(x), int(x*y) % y/y))(a, 1e1)
(1234, 0.5)
>>> (lambda x, y: (int(x), int(x*y) % y/y))(a, 1e15)
(1234, 0.5678)
이것은 나에게도 작동합니다.
>>> val_int = int(a)
>>> val_fract = a - val_int
이것이 내가하는 방법입니다.
num = 123.456
split_num = str(num).split('.')
int_part = int(split_num[0])
decimal_part = int(split_num[1])
NumPy를 사용해도 괜찮다면 :
In [319]: real = np.array([1234.5678])
In [327]: integ, deci = int(np.floor(real)), np.asscalar(real % 1)
In [328]: integ, deci
Out[328]: (1234, 0.5678000000000338)
참고 URL : https://stackoverflow.com/questions/6681743/splitting-a-number-into-the-integer-and-decimal-parts
반응형
'Development Tip' 카테고리의 다른 글
Ruby 메서드의 시간 측정 및 벤치 마크 (0) | 2020.10.22 |
---|---|
Go에서 배열 셔플 (0) | 2020.10.22 |
SQL Server Management Studio 17에서 하나 이상의 구성 요소를 찾을 수 없습니다. (0) | 2020.10.22 |
Visual Studio-전체 줄을 선택할 수있는 키보드 조합이 있습니까? (0) | 2020.10.22 |
기본 제공되지 않는 가장 좋아하는 LINQ to Objects 연산자는 무엇입니까? (0) | 2020.10.22 |