快速演示我的小問題。這聽起來像是一個新手問題,但我需要確保提供正確的代碼,這就是我決定問的原因。
def minsec(sec):
m, s = divmod(sec, 60)
print(f"{int(m)}m {s:.2f}s")
minsec(59.99) # 0m 59.99s OK
minsec(59.999) # 0m 60.00s !!! I definitely want 1m 0.00s
我的第一個想法是如果秒部分高于 59.995,我應該添加 0.005。或者我應該將每個值四舍五入到小數點后 2 位作為第一步。在實際程式中,小數位數是可變的,但這是可以管理的。下一個想法是檢查生成的字串是否以“60”秒開頭,并在它發生時修復它。還是有更好的演算法?
uj5u.com熱心網友回復:
在函式頂部添加這一行:
sec = round(sec, 2)
uj5u.com熱心網友回復:
您可以允許在 divmod 呼叫之前進行舍入
def minsec(sec):
sec = round(sec, 2)
m, s = divmod(sec, 60)
print(f"{int(m)}m {s:.2f}s")
uj5u.com熱心網友回復:
將宣告更新m, s = divmod(sec, 60)為:
m, s = divmod(round(sec, 2), 60)
這將提供所需的輸出,并且不需要太多計算。
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/488851.html
標籤:Python
