Ответ 1
Что вы можете сделать, так это заставить его разделить a
и b
на два раза:
int x = (int) (((double) a / (double) b) * 100);
Я пытаюсь разделить два целых числа и умножить на 100, но он продолжает давать только 0 или 100. Может кто-нибудь мне помочь?
int x= (a/b)*100;
если a было 500, а b - 1000, это дало бы мне 0. Единственный раз, когда он даст мне 100, - это если a >= b. Как я могу это исправить?
Спасибо
Что вы можете сделать, так это заставить его разделить a
и b
на два раза:
int x = (int) (((double) a / (double) b) * 100);
Целочисленное деление не имеет фракций, поэтому 500/1000 = 0,5 (это не целое!), которое усекается до целого числа 0. Вы, вероятно, хотите
int x = a * 100 / b;
Это звучит так, будто вы неправильно печатаете свои переменные; два целочисленных деления приводят к целому числу, а не по плаванию или двойному. Например:
(int)3 / (int)5 = 0
(float)3 / (float)5 = 0.6
Попробуйте следующее:
int x = a * 100 / b;
Идея заключается в том, что вы сначала выполняете a / b
, а потому, что это целочисленная операция, она будет округлять результат до 0
. Сначала нужно выполнить a * 100
.