Разделение двух целых чисел на Java дает мне 0 или 100?

Я пытаюсь разделить два целых числа и умножить на 100, но он продолжает давать только 0 или 100. Может кто-нибудь мне помочь?

    int x= (a/b)*100;

если a было 500, а b - 1000, это дало бы мне 0. Единственный раз, когда он даст мне 100, - это если a >= b. Как я могу это исправить?

Спасибо

Ответы

Ответ 1

Что вы можете сделать, так это заставить его разделить a и b на два раза:

int x = (int) (((double) a / (double) b) * 100);

Ответ 2

Целочисленное деление не имеет фракций, поэтому 500/1000 = 0,5 (это не целое!), которое усекается до целого числа 0. Вы, вероятно, хотите

int x = a * 100 / b;

Ответ 3

Это звучит так, будто вы неправильно печатаете свои переменные; два целочисленных деления приводят к целому числу, а не по плаванию или двойному. Например:

(int)3 / (int)5 = 0
(float)3 / (float)5 = 0.6

Ответ 4

Попробуйте следующее:

int x = a * 100 / b;

Идея заключается в том, что вы сначала выполняете a / b, а потому, что это целочисленная операция, она будет округлять результат до 0. Сначала нужно выполнить a * 100.