float yLimit = [[UIScreen mainScreen] bounds].size.height;
yLimit = yLimit * (2/3);
NSLog(@"ylimit: %f", yLimit);
NSLOG 的产量为 0.0。
哼?
换句话说,2 和 3 是隐式整数类型。当 2/3 除法发生时,你会得到整数除法。零。没有剩余。无四舍五入。
然后你乘以浮点数就是这个结果。
这里的教训是,您应该显式键入文本。C 有文字的后缀来帮助你解决这个问题。
它实际上是为人类阅读代码和编译器所针对的。
将代码从
yLimit = yLimit *(2/3);
自
yLimit = yLimit *2/3;
当2/3
除法发生时,你会得到0
。(零),然后0
乘以yLimit
收益率0
2/3
等同于Int
/Int
,这会导致Int
,而不是提问者所期望的Double
或Float
。
好吧,yLimit * (2/3)
结果yLimit * 0
,如2/3 = 0.6666666667
,但由于隐式整数类型,它四舍五入为0