Python 取整问题
>>> num = 4.123456
>>> round(num, 3) # expecting 4.123
4.1230000000000002
我期待的结果是4.123,我错了吗?
4 个回答
6
是的,你的期望和你使用的工具的设计目的不太一致。
可以看看 这个Python教程的部分。
其实,使用 math.round
的情况并不多。如果你想把一个数字以特定的精度显示为字符串,你可能需要用一些其他的方法,比如:
>>> num = 4.123456
>>> print "%.3f" % num
4.123
你可能会对 字符串格式化 的文档感兴趣。
7
这不是一个错误。你需要了解一下每个计算机科学家都应该知道的浮点运算:
2
如果你想要准确地表示你的浮点数,最好使用 decimal
这个工具。