在Python中将float转换为整数 - 无效的文字错误

时间:2012-08-25 02:17:39

标签: python json floating-point

如何将此数字转换为整数我可以用简单的数学运算?! (例如,下面的10.5200。)

{"bid":["10.52000000","0.70824000"],"ask":["10.54000000","2.07336000"],"seq":2456916}

我收到以下错误,这让我精神错乱:

ValueError: invalid literal for int() with base 10: '10.52'

这就是我正在运行的:

bitfl = json.loads(bitfl)
bid = bitfl['bid']
ask = bitfl['ask']
bidd = bid[0] #edit - this is actually in, as it's a list
askk = ask[0]
print('diff: %i' % (int(bidd[0]) - int(askk[0])))

我不知道为什么要将“10.52”作为字符串或浮点数或unicode接受并将其转换为正常的可计算整数应该如此困难!

任何帮助很多人赞赏!

2 个答案:

答案 0 :(得分:4)

问题是您正在尝试将包含非整数的字符串转换为整数。

最简单/最佳的解决方案是使用int(float(yourstring))

由于您以JSON格式接收数据,因此您还应考虑要求提供数据的客户端不要将字符串用于非字符串数据。

答案 1 :(得分:1)

只需写下int(float(bidd[0]))

即可