【发布时间】:2015-01-13 04:20:55
【问题描述】:
float yLimit = [[UIScreen mainScreen] bounds].size.height;
yLimit = yLimit * (2/3);
NSLog(@"ylimit: %f", yLimit);
nslog 产生 0.0。
嗯?
【问题讨论】:
-
尝试将 f 或 F 放在 2 和 3 之后
-
或者把3改成3.0。
yLimit *= 2/3.0: -
顺便说一句 - 使用
CGFloat,而不是float。 -
@rmaddy 这么说的原因是因为 CGFloat 在 32 位和 64 位系统上分别被条件化为浮点数或双精度数,并且 UIKit 和 AppKit 使用 CGFloat 测量坐标。实际上,您可能在某处忽略了一些警告,因为 Xcode 中的 Clang 会唠叨您进行隐式转换,通常会丢失精度。
标签: objective-c floating-point uiscreen