我該如何糾正這個舍入函數?我該如何糾正這個舍入函數?
def round_down(num, prec):
uod = round(num, prec)
if uod > num:
return uod - 1/10^prec
return uod
它提出:類型錯誤:不支持的操作數類型(一個或多個),用於^: '浮動' 和 'INT'。
我該如何糾正這個舍入函數?我該如何糾正這個舍入函數?
def round_down(num, prec):
uod = round(num, prec)
if uod > num:
return uod - 1/10^prec
return uod
它提出:類型錯誤:不支持的操作數類型(一個或多個),用於^: '浮動' 和 'INT'。
^
並不意味着你的想法。改爲使用**
。
From the Python documentation:
The
^
operator yields the bitwise XOR (exclusive OR) of its arguments, which must be plain or long integers.
此外,作爲mgilson指出,1/10
將等於0
在Python 2.x中,所以要使用1.0/10
代替:
def round_down(num, prec):
uod = round(num, prec)
if uod > num:
return uod - 1.0/10 ** prec
return uod
還有一個小問題,在python2.x中,'1/10'將始終爲'0' – mgilson 2013-05-08 14:44:21
感謝您的支持,我將使用1./10,不過我使用的是Python 3。 – mistermarko 2013-05-08 14:56:56
給我們一個功能齊全例如,包括您如何調用函數以及您傳遞的參數。當然,你的特定問題只是當你指'**'時你正在嘗試使用'^'。 – 2013-05-08 14:41:03
,正如@mgilson指出的那樣,使用「1./10.''使得python使用浮點數而不是整數更安全(在這種情況下結果將是」0「) – Schorsch 2013-05-08 14:47:47
做出校正print(round_down(8.4789,2))根據需要給出8.47。我只是認爲問題更加深刻。一定要小心這些假設! – mistermarko 2013-05-08 14:52:50