我的值为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 :(得分:3)
这无法完成。 0
和-0
没有Int
的单独表示形式。 Swift中的整数(与其他编程语言一样)使用2
's complement表示。要取消数字,请反转所有位并添加1
。从Int
0
开始,所有位均为0
。反转所有位会产生所有1
,然后添加1
会导致它返回到所有0
,因为进位位退出顶端。因此0
和-0
具有完全相同的表示形式。