Android Studio - расчет равен нулю, несмотря на отсутствие нулевых значений - PullRequest
0 голосов
/ 23 ноября 2018

У меня небольшая проблема в Android Studio с вычислением, равным 0,0.Я думаю, что знаю почему, но я не уверен, как это исправить.Вычисление выглядит следующим образом:

float energyConsumption = ((20*128/100)/1000)*(12*blocsRounded*24*365);

blocsRounded рассчитывается по данным, введенным пользователем, и с тестовыми данными оценивается в 62.0, и я проверил это значение, чтобы убедиться, что оно работает правильно,Следовательно, это означает, что этот расчет должен оцениваться до 166,846.464.Но вместо этого я получаю вывод 0.0.И я на 100% уверен, что у меня есть правильное значение для blocsRounded, поскольку я вывел это на консоль для проверки.

Я предполагаю, что это как-то связано со способом хранения чисел с плавающей запятой(и изменение этого значения на двойное дает мне тот же результат 0.0), но если это так, то я не уверен, как обойти это.

Любой совет будет принят с благодарностью.

Ответы [ 2 ]

0 голосов
/ 23 ноября 2018

Это:

(20*128/100)/1000

оценивается как 0, поскольку все числа обрабатываются как int.Следовательно, 2560/100000 есть 0.Вам нужно только указать, что 1-й номер имеет тип float, добавив к нему суффикс f:

float energyConsumption = ((20f*128/(100*1.0))/1000)*(12*blocsRounded*24*365);
0 голосов
/ 23 ноября 2018

Здесь происходит целочисленное деление.Умножьте знаменатель на 1,0, чтобы он стал плавать divison.try this

float energyConsumption = ((20*128/(100*1.0))/1000)*(12*blocsRounded*24*365);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...