python - 为什么除法四舍五入为整数?

标签 python math python-2.x

我试图将一组从 -100 到 0 的数字标准化为 10-100 的范围,但遇到问题只是注意到即使根本没有变量,这也不会像我期望的那样评估它:

>>> (20-10) / (100-10)
0

浮点除法也不起作用:

>>> float((20-10) / (100-10))
0.0

如果除法的任一侧被转换为 float ,它将起作用:

>>> (20-10) / float((100-10))
0.1111111111111111

第一个例子中的每一边都被评估为一个 int,这意味着最终的答案将被转换为一个 int。因为 0.111 小于 0.5,所以四舍五入为 0。在我看来它并不透明,但我想就是这样。

解释是什么?

最佳答案

您使用的是 Python 2.x,其中整数除法将被截断,而不是成为 float 。

>>> 1 / 2
0

您应该将其中一个设为 float:

>>> float(10 - 20) / (100 - 10)
-0.1111111111111111

from __future__ import division,强制 / 采用 Python 3.x 始终返回 float 的行为。

>>> from __future__ import division
>>> (10 - 20) / (100 - 10)
-0.1111111111111111

关于python - 为什么除法四舍五入为整数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2958684/

相关文章:

python - 训练 TensorFlow 预测 csv 文件中的列

python - 从本地的 pyspark 读取 azure datalake gen2 文件

php - 使用 boolean 运算符扩展 EvalMath

c++ - 求解 D 给定 A、B、C 和 C-D 的长度,平行于 A-B

django - 使用 CSV Django 模块以通用换行模式打开文件

python - 在没有空格或换行符的python中打印变量

python - 使用Python从MCP23017获取信息

python - Pandas Dataframe 对 ms 值重新采样

math - 如何计算变换矩阵

Python多线程基础混淆