尝试解决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? –