【发布时间】:2021-01-08 17:34:09
【问题描述】:
我在 linux 上使用 python3.6 工作,遇到了 abs() 函数的一个非常明显的故障。我的变量x 最终成为一个非常大的负数(可能是-inf),但绝对值abs() 函数仍然返回一个负 数,这应该是不可能的。我通过在 abs() 的输入中添加 0.1 来快速修复我的代码,但是....我误解了应该如何使用 abs() 吗?
$> x
-9223372036854775808
$> abs(x)
-9223372036854775808
$> np.abs(x)
-9223372036854775808
$> abs(x+.1)
9.223372036854776e+18
$> np.abs(x+.1)
9.223372036854776e+18
编辑:在下面解决,但归结为 x 是 numpy.int64 而不仅仅是 int,我不知道。
【问题讨论】:
-
我无法在 MacOS High Sierra 上的 Python 3.6.3 中重现这一点。
-
我也尝试使用
x= -9223372036854775808然后abs(x)重现它并产生了积极的结果 -
请指定您使用的 shell 和 Python 版本。这不会在 Python 3.8 或 2.7 中重现,无论是命令行执行程序还是 IDLE shell。
-
在 Ubuntu 20.04 中使用 python 3.8.5 和 ipython 对我来说很好。
-
print(x, type(x))显示什么?
标签: python python-3.x numpy python-3.6 absolute-value