我有一个Int
类型的值。我需要定义这个值的符号。我不知道如何用-0
来处理边缘情况。
signum-如果该值为负,则返回-1;如果该值为正,则返回1;
否则,0
0.signum() // 0
-0.signum() // 0
我试图将其转换为
Double
,但也没有帮助。Double(-0).floatingPointClass == .negativeZero // false
以及
String
String(-0) // "0"
这个问题有什么解决办法吗?或
0
类型的-0
和Int
值相同? 最佳答案
这是办不到的。0
和-0
没有作为Int
的单独表示。Swift中的整数(与其他编程语言一样)使用2
's complement表示。要对一个数字求反,需要反转所有位并添加1
。从Int
0
开始,所有位都是0
。反转所有位将导致所有1
,然后添加1
将导致在进位从顶部滚下时返回到所有0
。因此0
和-0
具有完全相同的表示。
关于swift - 定义Int为零和负零时的符号,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/50889483/