float yLimit = [[UIScreen mainScreen] bounds].size.height;
yLimit = yLimit * (2/3);
NSLog(@"ylimit: %f", yLimit);
nslog产生0.0。
咦?
答案 0 :(得分:6)
换句话说,2和3是隐式整数类型。当⅔除法发生时,你得到整数除法。零。没有剩余。没有四舍五入。
然后你将浮动乘以该结果。
这里的教训是你应该明确地输入你的文字。 C有文字的后缀来帮助你解决这个问题。
对于人类阅读代码而言,它与编译器的实际意图一样多。
答案 1 :(得分:1)
从
更改您的代码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