산업 제조
산업용 사물 인터넷 | 산업자재 | 장비 유지 보수 및 수리 | 산업 프로그래밍 |
home  MfgRobots >> 산업 제조 >  >> Industrial programming >> python

파이썬 숫자, 유형 변환 및 수학

Python 숫자, 유형 변환 및 수학

이 기사에서는 Python에서 사용되는 다양한 숫자, 한 데이터 유형에서 다른 데이터 유형으로 변환하는 방법, Python에서 지원되는 수학 연산에 대해 알아봅니다.

파이썬의 숫자 데이터 유형

Python은 정수, 부동 소수점 숫자 및 복소수를 지원합니다. int로 정의됩니다. , float , 및 complex 파이썬 수업.

정수와 부동 소수점은 소수점의 유무로 구분됩니다. 예를 들어 5는 정수이고 5.0은 부동 소수점 숫자입니다.

복소수는 x + yj 형식으로 작성됩니다. , 여기서 x 실수 부분이고 y 허수 부분입니다.

type()을 사용할 수 있습니다. 변수 또는 값이 속한 클래스 및 isinstance()를 확인하는 함수 특정 클래스에 속하는지 확인하는 함수입니다.

예를 살펴보겠습니다.

a = 5

print(type(a))

print(type(5.0))

c = 5 + 3j
print(c + 3)

print(isinstance(c, complex))

위의 프로그램을 실행하면 다음과 같은 결과가 나옵니다.

<class 'int'>
<class 'float'>
(8+3j)
True

정수의 길이는 제한되지 않지만 부동 소수점 숫자는 소수점 이하 15자리까지만 정확합니다(16자리는 정확하지 않음).

우리가 매일 다루는 숫자는 십진법(10진법) 숫자 체계입니다. 그러나 컴퓨터 프로그래머(일반적으로 임베디드 프로그래머)는 2진법(2진법), 16진법(16진법) 및 8진법(8진법) 숫자 체계로 작업해야 합니다.

Python에서는 해당 숫자 앞에 접두사를 적절하게 배치하여 이러한 숫자를 나타낼 수 있습니다. 다음 표는 이러한 접두사를 나열합니다.

숫자 체계 접두사
바이너리 '0b' 또는 '0B'
8진수 '0o' 또는 '0O'
16진수 '0x' 또는 '0X'

다음은 몇 가지 예입니다.

# Output: 107
print(0b1101011)

# Output: 253 (251 + 2)
print(0xFB + 0b10)

# Output: 13
print(0o15)

프로그램을 실행하면 다음과 같이 출력됩니다.

107
253
13
<시간>

유형 변환

한 유형의 숫자를 다른 유형으로 변환할 수 있습니다. 이를 강제라고도 합니다.

더하기, 빼기와 같은 연산은 피연산자 중 하나가 float인 경우 암시적으로(자동으로) 정수를 float로 강제 변환합니다.

>>> 1 + 2.0
3.0

위에서 1(정수)이 덧셈을 위해 1.0(float)으로 강제 변환되고 결과도 부동 소수점 숫자임을 알 수 있습니다.

int()과 같은 내장 함수를 사용할 수도 있습니다. , float()complex() 유형 간에 명시적으로 변환합니다. 이러한 함수는 문자열에서도 변환할 수 있습니다.

>>> int(2.3)
2
>>> int(-2.8)
-2
>>> float(5)
5.0
>>> complex('3+5j')
(3+5j)

부동 소수점에서 정수로 변환할 때 숫자가 잘립니다(소수 부분은 제거됨).

<시간>

파이썬 십진수

Python 내장 클래스 float는 우리를 놀라게 할 수 있는 몇 가지 계산을 수행합니다. 우리 모두는 1.1과 2.2의 합이 3.3이라는 것을 알고 있지만 파이썬은 동의하지 않는 것 같습니다.

>>> (1.1 + 2.2) == 3.3
False

무슨 일이야?

컴퓨터가 이진수(0과 1)만 이해하므로 부동 소수점 숫자는 컴퓨터 하드웨어에서 이진수 분수로 구현됩니다. 이러한 이유로 우리가 알고 있는 대부분의 소수는 컴퓨터에 정확하게 저장할 수 없습니다.

예를 들어 보겠습니다. 분수 1/3은 십진수로 나타낼 수 없습니다. 이것은 무한히 긴 0.33333333...을 제공하며 우리는 대략적으로만 계산할 수 있습니다.

소수점 이하 자릿수 0.1은 0.000110011001100110011의 무한히 긴 이진 분수가 되며 우리 컴퓨터는 그 중 유한 수만 저장합니다.

이것은 대략 0.1에 불과하지만 결코 같지 않습니다. 따라서 이것은 Python의 오류가 아니라 컴퓨터 하드웨어의 한계입니다.

>>> 1.1 + 2.2
3.3000000000000003

이 문제를 극복하기 위해 Python과 함께 제공되는 decimal 모듈을 사용할 수 있습니다. 부동 소수점 숫자는 소수점 이하 15자리까지의 정밀도를 갖지만 소수 모듈은 사용자가 설정할 수 있는 정밀도를 갖습니다.

차이점을 살펴봅시다:

import decimal

print(0.1)

print(decimal.Decimal(0.1))

출력

0.1
0.1000000000000000055511151231257827021181583404541015625

이 모듈은 학교에서 배운 소수 계산을 수행할 때 사용됩니다.

또한 의미를 보존합니다. 25.50kg이 25.5kg보다 더 정확하다는 것을 알고 있습니다. 25.50kg은 소수점 이하 자릿수가 1자리에 비해 두 자리이기 때문입니다.

from decimal import Decimal as D

print(D('1.1') + D('2.2'))

print(D('1.2') * D('2.50'))

출력

3.3
3.000

위의 예에서 후행 0에 주목하십시오.

Decimal을 구현하지 않는 이유를 물을 수 있습니다. 매번 float 대신? 주된 이유는 효율성입니다. 부동 소수점 연산은 Decimal보다 빨라야 합니다. 작업.

float 대신 Decimal을 사용해야 하는 경우

일반적으로 다음과 같은 경우 Decimal을 사용합니다.

<시간>

파이썬 분수

Python은 fractions를 통해 분수와 관련된 연산을 제공합니다. 모듈.

분수에는 분자와 분모가 있으며 둘 다 정수입니다. 이 모듈은 유리수 산술을 지원합니다.

우리는 다양한 방법으로 Fraction 객체를 생성할 수 있습니다. 살펴보겠습니다.

import fractions

print(fractions.Fraction(1.5))

print(fractions.Fraction(5))

print(fractions.Fraction(1,3))

출력

3/2
5
1/3

Fraction를 생성하는 동안 float에서 , 비정상적인 결과를 얻을 수 있습니다. 이는 이전 섹션에서 논의한 바와 같이 불완전한 이진 부동 소수점 숫자 표현 때문입니다.

다행히 Fraction 문자열로도 인스턴스화할 수 있습니다. 십진수를 사용할 때 선호되는 옵션입니다.

import fractions

# As float
# Output: 2476979795053773/2251799813685248
print(fractions.Fraction(1.1))

# As string
# Output: 11/10
print(fractions.Fraction('1.1'))

출력

2476979795053773/2251799813685248
11/10

이 데이터 유형은 모든 기본 작업을 지원합니다. 다음은 몇 가지 예입니다.

from fractions import Fraction as F

print(F(1, 3) + F(1, 3))

print(1 / F(5, 6))

print(F(-3, 10) > 0)

print(F(-3, 10) < 0)

출력

2/3
6/5
False
True
<시간>

파이썬 수학

Python은 math과 같은 모듈을 제공합니다. 및 random 삼각법, 로그, 확률 및 통계 등과 같은 다양한 수학을 수행합니다.

import math

print(math.pi)

print(math.cos(math.pi))

print(math.exp(10))

print(math.log10(1000))

print(math.sinh(1))

print(math.factorial(6))

출력

3.141592653589793
-1.0
22026.465794806718
3.0
1.1752011936438014
720

다음은 Python 수학 모듈에서 사용할 수 있는 전체 함수 및 속성 목록입니다.

import random

print(random.randrange(10, 20))

x = ['a', 'b', 'c', 'd', 'e']

# Get random choice
print(random.choice(x))

# Shuffle x
random.shuffle(x)

# Print the shuffled x
print(x)

# Print random element
print(random.random())

위의 프로그램을 실행하면 다음과 같이 출력됩니다.(임의의 동작으로 인해 값이 다를 수 있음)

18
e
['c', 'e', 'd', 'b', 'a']
0.5682821194654443

다음은 Python random 모듈에서 사용할 수 있는 전체 기능 및 속성 목록입니다.


python

  1. C# 유형 변환
  2. 파이썬 키워드와 식별자
  3. Python 문, 들여쓰기 및 주석
  4. Python 변수, 상수 및 리터럴
  5. Python 유형 변환 및 유형 캐스팅
  6. 파이썬 입력, 출력 및 가져오기
  7. Python 전역, 지역 및 비지역 변수
  8. Python 디렉토리 및 파일 관리
  9. Python 오류 및 내장 예외
  10. Python에서 현재 날짜와 시간을 얻는 방법은 무엇입니까?