Python 的数学模块包含方便的函数,例如 floor
和 ceil
。这些函数采用 float 并返回其下方或上方最接近的整数。然而,这些函数将答案作为 float 返回。例如:
import math
f=math.floor(2.3)
现在 f
返回:
2.0
什么是从这个 float 中取出一个整数的最安全方法,而不会有舍入错误的风险(例如,如果 float 等于 1.99999)或者我应该完全使用另一个函数?
最佳答案
所有可以用 float 表示的整数都有一个精确的表示。所以你可以安全地在结果上使用 int
。仅当您尝试使用不是 2 的幂的分母来表示有理数时,才会出现不精确的表示。
这个工作一点都不简单!如果所讨论的数字的幅度足够小,则 int∘floor = ⌊⋅⌋ 是 IEEE 浮点表示的一个属性,但 int(floor(2.3)) 可能为 1 时可能有不同的表示。
引自Wikipedia ,
Any integer with absolute value less than or equal to 224 can be exactly represented in the single precision format, and any integer with absolute value less than or equal to 253 can be exactly represented in the double precision format.
https://stackoverflow.com/questions/3387655/