float yLimit = [[UIScreen mainScreen] bounds].size.height;
yLimit = yLimit * (2/3);
NSLog(@"ylimit: %f", yLimit);
the nslog yields 0.0.
Huh?
float yLimit = [[UIScreen mainScreen] bounds].size.height;
yLimit = yLimit * (2/3);
NSLog(@"ylimit: %f", yLimit);
the nslog yields 0.0.
Huh?
换句话说, 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
, as ,但由于隐式整数类型而2/3 = 0.6666666667
四舍五入0