소수점 다음에 숫자를 얻는 방법은?
소수점 뒤의 숫자는 어떻게 얻습니까?
를 들어,가 를들어내가 있으면 만가약예.5.55
어떻게 해야 합니까?.55
?
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)
표준 라이브러리의 모듈을 사용하여 원래 정밀도를 유지하고 부동 소수점 반올림 문제를 방지할 수 있습니다.
>>> from decimal import Decimal
>>> Decimal('4.20') % 1
Decimal('0.20')
댓글에 있는 모든 노트와 마찬가지로 네이티브로 변환해야 합니다.float
먼저 줄을 묶습니다.
간편한 접근 방식:
number_dec = str(number-int(number))[1:]
모듈로 사용해 보십시오.
5.55%1 = 0.54999999999999982
할 수 있도록 : try 음모수서작에동록하도려하면양시도수: 와두시▁to. abs(x)%1
에는 음의경다음값을사않용다습니지하를 사용하지 않고 사용합니다.abs
잘못될 것입니다.
5.55 % 1
출력 0.54999999999998
-5.55 % 1
출력 0.45000000000002
import math
orig = 5.55
whole = math.floor(orig) # whole = 5.0
frac = orig - whole # frac = 0.55
받아들여진 대답과 비슷하게, 문자열을 사용하는 훨씬 더 쉬운 접근법은
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
>>> n=5.55
>>> if "." in str(n):
... print "."+str(n).split(".")[-1]
...
.55
단순 연산자 나눗셈 '/'과 바닥 나눗셈 '//'만 사용하면 주어진 부동 소수점 부분을 쉽게 얻을 수 있습니다.
number = 5.55
result = (number/1) - (number//1)
print(result)
때때로 뒤에 오는 0은 물질입니다.
In [4]: def split_float(x):
...: '''split float into parts before and after the decimal'''
...: before, after = str(x).split('.')
...: return int(before), (int(after)*10 if len(after)==1 else int(after))
...:
...:
In [5]: split_float(105.10)
Out[5]: (105, 10)
In [6]: split_float(105.01)
Out[6]: (105, 1)
In [7]: split_float(105.12)
Out[7]: (105, 12)
modf를 사용한 다른 예
from math import modf
number = 1.0124584
# [0] decimal, [1] integer
result = modf(number)
print(result[0])
# output = 0124584
print(result[1])
# output = 1
이것이 제가 시도한 해결책입니다.
num = 45.7234
(whole, frac) = (int(num), int(str(num)[(len(str(int(num)))+1):]))
부동 소수는 10진수(기본값 10) 형식으로 저장되지 않습니다.이에 대한 파이썬 설명서를 읽어보고 그 이유를 확인해 보십시오.따라서 플로트에서 기본 10 표현을 가져오는 것은 권장되지 않습니다.
이제 숫자 데이터를 10진수 형식으로 저장할 수 있는 도구가 있습니다.은 다은다사예입다니용을 입니다.Decimal
도서관.
from decimal import *
x = Decimal('0.341343214124443151466')
str(x)[-2:] == '66' # True
y = 0.341343214124443151466
str(y)[-2:] == '66' # False
입력이 문자열인 경우 더 쉽게 split()을 사용할 수 있습니다.
decimal = input("Input decimal number: ") #123.456
# split 123.456 by dot = ['123', '456']
after_coma = decimal.split('.')[1]
# because only index 1 is taken then '456'
print(after_coma) # '456'
숫자 활자 인쇄(int(_coma 후) # 456
바닥을 사용하고 원래 숫자에서 결과를 뺍니다.
>> import math #gives you floor.
>> t = 5.55 #Give a variable 5.55
>> x = math.floor(t) #floor returns t rounded down to 5..
>> z = t - x #z = 5.55 - 5 = 0.55
예:
import math
x = 5.55
print((math.floor(x*100)%100))
이것은 소수점 뒤에 두 개의 숫자를 줄 것입니다. 그 예에서 55개입니다.하나의 숫자가 필요한 경우 위의 계산을 10만큼 줄이거나 소수점 뒤에 원하는 숫자의 수에 따라 늘립니다.
import math
x = 1245342664.6
print( (math.floor(x*1000)%1000) //100 )
확실히 효과가 있었습니다.
은 다옵션다것사다입니는용하음을른은▁the다것니▁another입▁be▁would를 사용하는 것입니다.re
을 구성합니다.re.findall
또는re.search
:
import re
def get_decimcal(n: float) -> float:
return float(re.search(r'\.\d+', str(n)).group(0))
def get_decimcal_2(n: float) -> float:
return float(re.findall(r'\.\d+', str(n))[0])
def get_int(n: float) -> int:
return int(n)
print(get_decimcal(5.55))
print(get_decimcal_2(5.55))
print(get_int(5.55))
산출량
0.55
0.55
5
표현을 단순화/축소/축소하려면 regex101.com 의 오른쪽 상단 패널에 설명되어 있습니다.원하는 경우 이 링크에서 샘플 입력과 어떻게 일치하는지 볼 수도 있습니다.
원천
파이썬 뺄셈에서 추가 부동 숫자를 제거하는 방법은 무엇입니까?
다음을 사용할 수 있습니다.
number = 5.55
int(str(number).split('.')[1])
이것은 첫 번째 소수점을 얻고자 하는 경우에만 해당됩니다.
print(int(float(input()) * 10) % 10)
아니면 이것을 시도할 수 있습니다.
num = float(input())
b = num - int(num)
c = b * 10
print(int(c))
수학 모듈 사용
이 속도를 테스트해야 합니다.
from math import floor
def get_decimal(number):
'''returns number - floor of number'''
return number-floor(number)
예:
n = 765.126357123
get_decimal(n)
0.12635712300004798
def fractional_part(numerator, denominator):
# Operate with numerator and denominator to
# keep just the fractional part of the quotient
if denominator == 0:
return 0
else:
return (numerator/ denominator)-(numerator // denominator)
print(fractional_part(5, 5)) # Should be 0
print(fractional_part(5, 4)) # Should be 0.25
print(fractional_part(5, 3)) # Should be 0.66...
print(fractional_part(5, 2)) # Should be 0.5
print(fractional_part(5, 0)) # Should be 0
print(fractional_part(0, 5)) # Should be 0
a = 12.587
b = float('0.' + str(a).split('.')[-1])
다음은 어떻습니까?
a = 1.234
b = a - int(a)
length = len(str(a))
round(b, length-2)
출력:
print(b)
0.23399999999999999
round(b, length-2)
0.234
반올림은 소수점 문자열의 길이('0.234')로 전송되므로 '0.'을 세지 않으려면 2를 빼기만 하면 되고 원하는 소수점 수를 계산할 수 있습니다.소수 자릿수가 많고 b를 계산할 때 반올림 오차가 반올림의 두 번째 모수와 간섭하지 않는 한 이 방법은 대부분 사용할 수 있습니다.
다음을 시도해 볼 수 있습니다.
your_num = 5.55
n = len(str(int(your_num)))
float('0' + str(your_num)[n:])
돌아올 것입니다.0.55
.
number=5.55
decimal=(number-int(number))
decimal_1=round(decimal,2)
print(decimal)
print(decimal_1)
출력: 0.55
python 3에서 소수점 뒤에 있는 숫자를 얻기 위해 자주 하는 작업을 확인하십시오.
a=1.22
dec=str(a).split('.')
dec= int(dec[1])
판다를 사용하는 경우:
df['decimals'] = df['original_number'].mod(1)
언급URL : https://stackoverflow.com/questions/3886402/how-to-get-numbers-after-decimal-point
'programing' 카테고리의 다른 글
사용자별로 조건을 충족하는 초기 항목 필터링 (0) | 2023.06.07 |
---|---|
Angular 2 및 TypeScript 약속 (0) | 2023.06.07 |
새 아스퍼.NetMVC5 프로젝트는 로그인 페이지에 대한 무한 루프를 생성합니다. (0) | 2023.06.07 |
파이썬 코드를 한 줄씩 프로파일링하려면 어떻게 해야 합니까? (0) | 2023.06.07 |
Firebase 스토리지에서 전체 폴더를 다운로드하는 방법은 무엇입니까? (0) | 2023.06.07 |