嘗試解決checkio練習時,我偶然發現了一個奇怪的行爲。將整數解析爲字符串的意外行爲
def friendly_number(number, base=1000, decimals=0, suffix='',
powers=['', 'k', 'M', 'G', 'T', 'P', 'E', 'Z', 'Y']):
power_i = 0
while abs(number) >= base and power_i < len(powers)-1:
number /= base
power_i += 1
number_str = str(number)
return number_str
fn = friendly_number(10**32)
我期待fn == "100000000"
,但我得到了fn = "99999999.99999999"
。我縮小到步驟number_str = str(number)
。最奇怪的是在命令行測試了這個:當我這樣做時,返回的值是"100000000"
。這裏發生了什麼?
從你的輸出和你的期望輸出I懷疑你可能會遇到[浮動數字問題](http://floating-point-gui.de/)。 –
您需要使用帶雙斜線的'// ='。這告訴Python你想把分割的結果四捨五入到最接近的整數=。 –
這是蟒蛇2還是3? –