【发布时间】:2025-12-08 14:50:02
【问题描述】:
我的算法采用列表[0,-0,1,-1,2,-2,3,-3] 等,并在伪代码中执行以下操作:
while list:
d = list.pop()
objects[abs(d)] *= sign(d)
您可以在这里看到为什么需要-0。如果我单独存储符号或从 1 或其他东西索引,我的代码必须不那么优雅。如何让 python 存储 0 和 -0?
编辑: 基本上我正在实施回溯搜索。因此,该列表中的变量以任意顺序排列,减号表示设置为 false。它通过并将 0 设置为 true,然后将 0 设置为 false,然后将 1 设置为 true,然后将 -1 设置为 false,等等。在我看来,最优雅的方法是将真值与索引结合使用减号。
编辑: 我找到了一种更好的方法来使用双端队列来做我想做的事情。我会留下这个问题,以免浪费这里的答案。
【问题讨论】:
-
在 C 语言中,在二进制补码机器(几乎所有现代平台)上,为整数
0设置符号位不会给你 -0,它会给你2147483648。 -
您可以使用
-0.0。如果您的列表是固定的,为什么不从0数到n并同时执行正面和负面案例? -
更一般地说,C 和 Python 一样,没有
-0作为整数,但可能有-0作为float(在 IEEE 浮动平台上,这又是几乎所有现代平台)。 -
看起来您正在索引一个单独的数组并从它的两侧开始。你能描述一下你真正想要做什么吗?
-
至于为什么没有
-0,它几乎没有那么有用。当浮点计算从负数下溢时,-0.0 表示有用的信息。整数没有任何类似的下溢条件,并且为 -0 保留位模式会产生尴尬的结果。