파이썬에서 float('inf')의 요점은 무엇입니까?
여기서 궁금한 것은 변수가 프로그램에 무한한 값을 저장하는 이유가 무엇입니까?실제 용도가 있으며, 사용하는 것이 더 바람직한 경우가 있습니까?foo = float('inf')
아니면 그냥 삽입하기 위해 끼워 넣은 작은 조각인가요?
이 값은 비교를 위한 제한되지 않은 상한 값으로 작용합니다.이것은 어떤 것의 가장 낮은 값을 찾는 데 유용합니다.예를 들어, 트리를 횡단할 때 경로 경로 비용을 계산합니다.
예: 옵션 목록에서 "가장 저렴한" 경로 찾기:
>>> lowest_path_cost = float('inf')
>>> # pretend that these were calculated using some worthwhile algorithm
>>> path_costs = [1, 100, 2000000000000, 50]
>>> for path in path_costs:
... if path < lowest_path_cost:
... lowest_path_cost = path
...
>>> lowest_path_cost
1
만약 당신이float('Inf')
사용 가능, 어떤 값을 사용하시겠습니까?the initial lowest_path_cost
그럴 것9999999
충분합니다 --float('Inf')
이 추측을 제거합니다.
설명서에서 다음을 참조하십시오.
많은 부동 소수점 피쳐가 추가되었습니다.float() 함수는 이제 문자열 nan을 IEEE 754 Not A Number 값으로, +inf 및 -inf를 양 또는 음의 무한대로 변환합니다.이것은 IEEE 754 의미론이 있는 모든 플랫폼에서 작동합니다. (Christian Heimes 기여, 1635호)
이 항목도 참조하십시오.Infinity 및 NaN 관련 작업
float('inf')
위 답변에서 언급한 바와 같이,float('inf')
값이 무한히 큰 변수를 설정하는 데 사용됩니다.간단히 말하면 +ve infinite로 설정됩니다.
또는 다음과 같은 문구를 사용할 수 있습니다.
import sys
least_value = sys.maxsize
sys.max 크기는 초기에 큰 값을 설정하는 데 더 일반적으로 사용됩니다.우리의 목표가 주어진 값 집합에서 최소 값을 찾는 것일 때.
또한 주어진 값 집합에서 가장 큰 값을 찾고자 하는 경우.우리는 다음을 사용할 수 있습니다.
import sys
greatest_value = -sys.maxsize - 1
# logic for comparing with rest of values
그-sys.maxsize - 1
초기 값을 -ve 무한대로 설정하는 데 사용됩니다.
float('inf')
비교에 사용할 수 있으므로 코드를 더 단순하고 명확하게 만들 수 있습니다.예를 들어 병합 정렬에서 afloat('inf')
하위 배열의 끝에 Sentinel 값으로 추가할 수 있습니다.수학에서 무한대를 사용하는 것과 혼동하지 마십시오. 결국 프로그래밍은 수학의 전부가 아닙니다.
0을 사용하는 대신 음수가 있을 경우 음수를 처리해야 하는 경우 float("+inf")와 float("-inf")를 사용하면 다음과 같이 양수 또는 음수 무한대를 비교할 수 있습니다.
사전에서 가장 큰 값 찾기:
def max_key(my_dict):
largest_key = float("-inf")
largest_value = float("-inf")
for key, value in my_dict.items():
if value > largest_value:
largest_value = value
largest_key = key
return largest_key
print(max_key({1:100, 2:1, 3:4, 4:10})) # should print 1
print(max_key({"a":100, "b":10, "c":1000})) # should print "c"
수학적 연산을 수행하는 동안 ①은 매우 중요한 개념입니다.
float("inf")
또는float("INF")
또는float("Inf")
또는float("inF")
또는float("infinity")
를 생성합니다.float
무한대를 유지하는 객체
float("-inf")
또는float("-INF")
또는float("-Inf")
또는float("-infinity")
음수 무한대를 유지하는 부동 객체를 만듭니다.
float("NAN")
또는float("nan")
또는float("Nan")
성float
절대 다수를 차지하지 않는
무한대 사용:
import math
_pos_infinity = float("INF")#Positive infinity
_neg_infinity = float("-INF")#Negative infinity
_nan = float("NAN")#Not a number
print(_pos_infinity, _neg_infinity, _nan)#inf -inf nan
"""
SincePython 3.5 you can use math.inf
Use math.isinf and math.isnan method to identify number
"""
print(math.isinf(_pos_infinity))#True
print(math.isnan(_pos_infinity))#False
print(math.isnan(_nan))#True
"""
Arithmetic operation
"""
print(_pos_infinity / _pos_infinity)#nan
print(_pos_infinity + 1)#inf
print(_neg_infinity + 1)#-inf
print(_neg_infinity - _neg_infinity)#nan, Since +infinity -infinity is indeterminate and undefined. Don't overthink infinity is a concept.
print(1 / _pos_infinity)#0.0 since 1/∞ is 0
print(1 / _neg_infinity)#-0.0
print(_pos_infinity * _neg_infinity)#-inf , A positive times a negative is a negative.
print(_neg_infinity * _neg_infinity)#inf, A negative times a negative is positive
try:
val = 1/(1/_pos_infinity) # 1/∞ is 0 & 1/0 will raise ZeroDivisionError
print("This line is not executed")
except ZeroDivisionError as err:
print(err)
출력:
$ python3 floating.py
inf -inf nan
True
False
True
nan
inf
-inf
nan
0.0
-0.0
-inf
inf
float division by zero
설정할 수 있습니다.-infinity
최소 값 및+infinity
a의 최대 가치로서QDoubleSpinBox
box = QDoubleSpinBox()
box.setMinimum(float("-inf"))
box.setMaximum(float("inf"))
출처:
import sys
from PySide6.QtWidgets import QMainWindow, QApplication, QDoubleSpinBox, QWidget, QFormLayout, QLineEdit, QPushButton
def getDoubleSpinBox() -> QDoubleSpinBox:
box = QDoubleSpinBox()
box.setMinimum(float("-inf"))
box.setMaximum(float("inf"))
box.setSingleStep(0.05)
box.setValue(100)
return box
def getLineEdit(placehoder: str, password: bool = False):
lineEdit = QLineEdit()
lineEdit.setPlaceholderText(placehoder)
if password:
lineEdit.setEchoMode(QLineEdit.Password)
return lineEdit
class MainWindow(QMainWindow):
def __init__(self):
super().__init__()
self.initUI()
def initUI(self):
self.setWindowTitle("Open Bank")
self.widget = QWidget()
self.widgetLayout = QFormLayout()
self.widgetLayout.addRow("ID", getLineEdit(placehoder="Investor name"))
self.widgetLayout.addRow("Investment", getDoubleSpinBox())
self.widgetLayout.addRow("Password", getLineEdit(placehoder="Enter secret password", password=True))
self.widgetLayout.addRow(QPushButton("Invest"), QPushButton("Cancel"))
self.widget.setLayout(self.widgetLayout)
self.setCentralWidget(self.widget)
if __name__ == "__main__":
app = QApplication(sys.argv)
win = MainWindow()
win.show()
sys.exit(app.exec())
창:
언급URL : https://stackoverflow.com/questions/34264710/what-is-the-point-of-floatinf-in-python
'programing' 카테고리의 다른 글
기존 Spring 프로젝트를 Spring Boot로 마이그레이션하는 방법 (0) | 2023.08.08 |
---|---|
iOS 11에서 UI 검색 막대가 탐색 막대 높이를 높입니다. (0) | 2023.08.08 |
Oracle에서 구체화된 보기를 부분적으로 새로 고칠 수 있습니까? (0) | 2023.08.08 |
ARC는 file -fno-objc-arc를 표시하더라도 구조체 또는 유니언에서 Objective-C 개체를 금지합니다. (0) | 2023.07.29 |
전체 기록 스택을 지우고 Android에서 새 작업 시작 (0) | 2023.07.29 |