1
float yLimit = [[UIScreen mainScreen] bounds].size.height;
yLimit = yLimit * (2/3);
NSLog(@"ylimit: %f", yLimit);

the nslog yields 0.0.

Huh?

4

2 回答 2

6

换句话说, 2 和 3 是隐式整数类型。当 ⅔ 除法发生时,您会得到整数除法。零。没有余数。没有四舍五入。

然后你乘以一个浮点数就是那个结果。

这里的教训是你应该明确地输入你的文字。C 有文字的后缀来帮助你。

实际上,它既适用于人类阅读代码,也适用于编译器。

于 2015-01-13T04:28:58.747 回答
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, as ,但由于隐式整数类型而2/3 = 0.6666666667四舍五入0

于 2015-01-13T04:45:28.420 回答