float:浮點數,表示帶有小數部分的數字,如 3.14、-0.1、32.080 等
應用場景
應用場景可以我把它分為兩大類,數學計算跟座標
int跟float一樣,都可以進行數學計算,但由於金融領域的數學計算會需要更精密的計算,經常需要處理小數部分,例如計算利率、匯率、金融商品以及財務報表,舉幾個例子
匯率:
除法:
result = 100.0 / 22.5
print(result)
現金流:
身為一個社畜,很多時候需要計算自己一個月的剩下的錢多少,來計算自己的現金流,假設一個在美國的社畜工程師他的週薪是2000美金,支出逐週計算,我們可以這樣列
#收入
income = [2000.0, 2000.0, 2000.0, 2000.0]
#支出
expenses = [1351.2, 1451.7, 1555.0, 1239.7]
#計算現金流
cash_flow = [inflow - outflow for inflow, outflow in zip(income, expenses)]
print(cash_flow)
#計算現金流
這條運用了for迴圈,遍歷每個月的支出跟收入
同時使用了zip函數,陣列中每組income、expenses都會配對相減形成一個數,以防止每個income都會跟每個expenses進行組合
透過高精度的數值計算,可以模擬物理現象,像是拋物線、電子電路、流體動力學等,以拋物線為例子,假設韌帶受傷的大谷翔平又敲了一發全壘打,不考慮阻力跟全壘打牆面高度的情況下:
# 我們需要把直接轉成曲線,會需要用到math裡面的函數
import math
# 水平位置跟垂直位置都設置為0
# 水平位置
x0 = 0
# 垂直位置
y0 = 0
# 初始速度跟初始角度
# 初始速度(m/s),擊球初速100英里/小時換算成公尺/秒
velocity = 44.704
# 角度,就像大谷翔平擊出菁英級的26度角
angle = 26.0
# 質量(kg),就是一顆棒球的重量,不過稍微重了一點
mass = 0.15
# 重力加速度(m/s^2)
gravity = 9.8
#把直線角度變成弧線角度
radians = math.radians(angle)
# 計算水平和垂直速度分量
# 計算水平
horizontal= velocity * math.cos(angle)
# 計算垂直
vertical= velocity * math.sin(angle)
# 模擬每個時間步驟的時間間隔(秒)
frequency = 0.01
### 以上設定結束,計算開始
# 初始水平為0
x = x0
# 初始垂直為0
y = y0
# 初始時間為0
t = 0.0
while y >= 0:
# 更新時間,每0.01秒狀態更新,觀察拋物線運動
t += frequency
# 計算水平位置
x = x0 + horizontal * t
# 計算垂直位置,這0.5怎麼來的,就是自由落體的公式
y = y0 + (vertical * t) - (0.5 * gravity * t * t)
# 印出來,印出每0.01秒的變化
print(f"時間: {t:.2f} 秒,水平位置: {x:.2f} 米,垂直位置: {y:.2f} 米")
print("全壘打!")
結果:
這球飛了大概6.96秒,最後變成全壘打,應該是這樣算(吧),希望高中物理的記憶還正確
不熟悉、沒有辦法弄出範例的就放在這
圖形處理和遊戲程式
都需要畫面的呈現,圖形處理、遊戲引擎這些都需要使用浮點數來表示座標、顏色、紋理、變換矩陣等
地理資訊系統
俗稱GIS,浮點數用於空間分析、圖像處理、數字地形操作、地理統計和分析等
氣象系統
浮點數用在溫度、濕度、風速、降雨量、氣象圖表和視覺化等
3D建模和畫面渲染
浮點數用於表示物體的位置、旋轉、視線角度和材質等
機器學習
需要透過浮點數來表示激活值、權重值、物件特徵等訊息
浮點數在科學、金融、遊戲等多個領域都需要用到,可以用於計算精密數字跟影像顯示,但需要注意的是,有些計算的情況下會引發自動進位或是自動捨去的情況,所以需要更精確掌握精度的長度,才能確保內容正確