我正在尝试使用CGFloat来获取字符串,类似这样......
helpMessage = [NSString stringWithFormat:@"The unsigned integer value is %i", (unsigned int)myCGFloat];
这不想工作。给定CGFloat值为-2,我在字符串中得到0。
如果我使用......
helpMessage = [NSString stringWithFormat:@"The unsigned integer value is %i", (int)myCGFloat];
我得-2。那越来越近了。所以我认为我可以使用@u作为格式说明符,但我得到了4294967294。
我做错了什么。
提前感谢您的帮助。这应该很容易。
约翰
答案 0 :(得分:3)
您收到4294967294
因为在将您的值转换为unsigned int
之后,没有一点可用于表示-2
的否定性,因此值“下溢“由2代替,可以这么说:
0
4294967295 (-1)
4294967294 (-2)
如果要显示负值,则应格式化为有符号整数(%i
)。有符号的32位整数的范围是-2147483648
到2147483647
,而无符号的32位整数的范围是0
到4294967295
。
答案 1 :(得分:1)
所以你试图将-2转换为unsigned int?无符号整数不能小于0.因此将被错误地表示。
答案 2 :(得分:1)
确定。谢谢你的答案,我想出来了......
helpMessage = [NSString stringWithFormat:@"The abasolute value is %i", abs((int)myCGFloat]);
我曾在CGFloat上直接尝试过abs,但我现在看到abs正在期待一个int值。我认为unsigned int与绝对值相同。谢谢你让我直截了当。
约翰