float yLimit = [[UIScreen mainScreen] bounds].size.height;
yLimit = yLimit * (2/3);
NSLog(@"ylimit: %f", yLimit);
nslog дает 0.0.Почему умножение поплавка показывает 0
Да?
float yLimit = [[UIScreen mainScreen] bounds].size.height;
yLimit = yLimit * (2/3);
NSLog(@"ylimit: %f", yLimit);
nslog дает 0.0.Почему умножение поплавка показывает 0
Да?
Изменить код из
yLimit = yLimit * (2/3);
к
yLimit = yLimit * 2/3;
Когда 2/3 деление происходит вы получаете 0. (ноль), то 0, умноженное на yLimit дает 0
Я собирался указать, что это не имеет значения, но это на самом деле. Вы должны объяснить, почему это работает. – rmaddy
@rmaddy: тот же здесь ... –
@FahimParkar То же здесь что? Вы собираетесь сказать то же самое, что и я, или вы хотите знать, почему это работает? Я знаю, почему, я просто хочу дать плакату возможность объяснить это. – rmaddy
Другими словами, 2 и 3 являются неявно целыми типами. Когда происходит деление occurs, вы получаете целочисленное деление. Нуль. Нет остатка. Без округления.
Затем вы умножаете поплавок на этот результат.
Урок здесь заключается в том, что вы должны явно вводить свои литералы. C имеет суффиксы для литералов, которые помогут вам в этом.
Это действительно предназначено для человеческого кода чтения, как и для компилятора.
Попробуйте положить е или F после 2 и после 3 – uchuugaka
Или измените 3 до 3,0. 'yLimit * = 2/3.0:' – rmaddy
BTW - используйте 'CGFloat', а не' float'. – rmaddy