2017-01-26 5 views
1
public int total; 
    public int likes; 
    public double average; 

    total = 5; 
    likes = 21; 

    average = likes/total; 

    Log.d("Average", average); 

Привет, average = likes/total should return 4.2, однако, его запуск 4.0. Как я могу сохранить его как 4.2, а не 4.0?Как предотвратить округление номера до 0, Android Studio

+0

Включите одну из переменных в виде двойника, иначе она округляется, поскольку целые округлые. – AntonH

+0

Вы имеете в виду изменение общего числа или любит удваивать? если это так, я пробовал это, и он все равно возвращает 4.0 –

+0

'average = (double) нравится/total;' – AntonH

ответ

1

Расчеты с использованием только целые числа приводит к конечный результат будет целым числом, даже если в дальнейшем вы присвоить его значение с плавающей запятой, как в два раза. Целочисленное деление работает, подсчитывая, сколько раз знаменатель может полностью вписываться в числитель.

Чтобы решить, вы должны гипс по меньшей мере, один из 2-х операндов в подразделении, так что деление выполняются уже в двойной точности (число внутри арифметические операции автоматически отливают к типу, который позволяет с большей точностью, чем его операнды, если хотя бы один из операндов имеет ту точность):

average = (double)likes/total; 

или

average = likes/(double) total; 

Обратите внимание, что это отличается от average = (double) (likes/total);, который произведет результат после того, как он уже округлен.

+1

Спасибо за headup с пространством в (double) :(Я сделал эту ошибку –

+0

Возможно ли это сделать с помощью float? Или мне нужно преобразовать double в float, потому что я только что узнал Мне нужно число, которое должно быть float –

+0

Возможно также с 'float', да. – AntonH

2
average = (double)likes/total; 
+0

поддерживается за короткое время, но я боюсь, что кто-то может подумать, что это волшебная константа. – GameDeveloper

+1

работы, спасибо .. –

+0

haha, правый @DarioOO. Спасибо за голосование! –

Смежные вопросы