python - 在python中将 float 转换为整数的最安全方法?

Python 的数学模块包含方便的函数,例如 floorceil。这些函数采用 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/

相关文章:

linux - 如何规范化 Bash 中的文件路径?

linux - 如何将命令行参数传递给 unix/linux 系统上正在运行的进程?

python - Pandas :从多级列索引中删除一个级别?

linux - 更改用户默认主目录的命令

python - 如何在 Python 中将字符串转换为 double 值?

linux - 第一次如何配置postgresql?

python - 为什么需要在 Python 方法中显式使用 "self"参数?

python - 让 virtualenv 从你的全局站点包中继承特定的包

python - 输入()错误 - NameError : name '...' is not de

python - Google 大量使用 Python