我有一个Int类型的值。我需要定义这个值的符号。我不知道如何用-0来处理边缘情况。
signum-如果该值为负,则返回-1;如果该值为正,则返回1;
否则,0

0.signum()  // 0
-0.signum() // 0

我试图将其转换为Double,但也没有帮助。
Double(-0).floatingPointClass == .negativeZero // false

以及String
String(-0) // "0"

这个问题有什么解决办法吗?或0类型的-0Int值相同?

最佳答案

这是办不到的。0-0没有作为Int的单独表示。Swift中的整数(与其他编程语言一样)使用2's complement表示。要对一个数字求反,需要反转所有位并添加1。从Int0开始,所有位都是0。反转所有位将导致所有1,然后添加1将导致在进位从顶部滚下时返回到所有0。因此0-0具有完全相同的表示。

关于swift - 定义Int为零和负零时的符号,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/50889483/

10-09 00:24