Python 取整问题

1 投票
4 回答
5918 浏览
提问于 2025-04-15 22:58
>>> 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

这不是一个错误。你需要了解一下每个计算机科学家都应该知道的浮点运算:

http://docs.sun.com/source/806-3568/ncg_goldberg.html

2

如果你想要准确地表示你的浮点数,最好使用 decimal 这个工具。

撰写回答