为什么浮点乘法显示为0

Why is float multiplication showing 0

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

nslog 产生 0.0。

嗯?

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

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

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

它实际上是为人类阅读代码和为编译器准备的。

更改您的代码

yLimit = yLimit *(2/3);

yLimit = yLimit *2/3;

当出现 2/3 除法时,您会得到 0。 (零)然后 0 乘以 yLimit 得到 0

2/3 等同于 Int/Int,结果是 Int 而不是提问者的 DoubleFloat期待。

嗯,yLimit * (2/3) 结果为 yLimit * 0,如 2/3 = 0.6666666667,但由于隐式整数类型

,它四舍五入为 0