Почему это печатает 0 в тост-сообщении? - PullRequest
0 голосов
/ 16 декабря 2018

Почему это возвращает 0?

Toast.makeText(this, "" + 109 / (7 + 109) * 100, Toast.LENGTH_SHORT).show();

Когда я пробую это на калькуляторе, он выводит правильно, но код печатает 0. Что идет не так?

Спасибо, я надеюсьВы можете помочь мне.

Ответы [ 3 ]

0 голосов
/ 16 декабря 2018

при использовании калькулятора ответ равен 0,93, но при использовании круглого пальца последнее число равно 3 <5, тогда значение 0 всегда будет равно 0, поэтому оно будет умножено на 0 * 100, тогда ответ будет 0 </p>

0 голосов
/ 16 декабря 2018

Правильный способ - убедиться, что числа в операции являются числами с плавающей запятой, а затем контролировать количество десятичных знаков для печати, используя метод String.Format.В примере установлено 0 десятичных знаков (%. 0f ):

String value = String.format(Locale.getDefault(), "%.0f", 109.0f / (7.0f + 109.0f) * 100.0f);
Toast.makeText(this, value, Toast.LENGTH_SHORT).show();
0 голосов
/ 16 декабря 2018

Возникла проблема с кастингом.Когда вы пытаетесь сделать все это с помощью целых чисел, он преобразует только целые числаВ середине этой арифметической операции было среднее состояние, подобное 0.93 *100, но это не тот случай, когда присутствуют только целые числа.Это 0,93 округляется до 0, затем оно умножается на 100, поэтому это произошло.Используйте код ниже, чтобы избежать этой ошибки приведения.Это неявно связать с двойными

Toast.makeText(this, "" + 109.0 / (7.0 + 109.0)*100 , Toast.LENGTH_SHORT).show();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...