【发布时间】:2010-10-16 19:15:39
【问题描述】:
是否有一种简单的 Pythonic 方法可以在不使用浮点的情况下舍入到最接近的整数?我想使用整数算术执行以下操作:
skip = int(round(1.0 * total / surplus))
==============
@John:浮点无法跨平台重现。如果您希望您的代码跨不同平台通过测试,那么您需要避免使用浮点(或在您的测试中添加一些 hacky espilon 的东西并希望它有效)。以上可能很简单,在大多数/所有平台上都是相同的,但我宁愿不做出这样的决定,因为完全避免浮点更容易。怎么会“不符合 Python 的精神”?
【问题讨论】:
-
@John:嗯,Python 中的 long 可以存储任意大的值,其中浮点数是固定精度的,因此在将浮点数引入整数运算时存在范围、复杂性和可能的错误。不过,我确实希望人们不要再用愚蠢的流行词“Pythonic”来回答每个问题。
-
@GlennMaynard 真的!这不是很 Pythical。
标签: python rounding integer-division