Java Разделение двух чисел с плавающей точкой Получение 0

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

float othersFloat = (float) others;
float totalPixelsFloat = (float) totalPixels;

// this variables have the values:
// othersFloat : 621347.0
// totalPixelsFloat : 654336.0

// then I do the divison like this:

float percentage_white_on_screen = (float) othersFloat  / totalPixelsFloat;

//But I get the value 0.0

Кто-нибудь может мне помочь?


person TiagoM    schedule 10.03.2014    source источник
comment
Каковы типы данных others и totalPixels?   -  person BitNinja    schedule 11.03.2014
comment
спасибо за ответ, они целые   -  person TiagoM    schedule 11.03.2014
comment
нет, другиеFloat 621347.0   -  person TiagoM    schedule 11.03.2014
comment
рассмотрите возможность использования double вместо float   -  person deanosaur    schedule 11.03.2014
comment
@deanosaur Я сомневаюсь, что это проблема. Я только что попробовал с int others = 621347 и int totalPixels = 654336;, и он выводит 0.949584   -  person Raul Rene    schedule 11.03.2014
comment
@ Рауль Рене, я не хотел сказать, что это решит эту проблему. Отсюда комментарий. В java float x = 621347,0/654336,0; не будет компилироваться. Использование int для числителя и знаменателя — это нормально, но вместо этого я предложил использовать double для возвращаемой переменной.   -  person deanosaur    schedule 11.03.2014


Ответы (1)


В коде, который вы нам показали, нет ничего плохого. Если входные данные заданы комментариями, то результатом не должно быть 0.0.

Итак, если это так, то:

  • фактические входные данные не имеют значений, которые вы думаете, что они имеют,

  • фактическое выходное значение отличается от того, что вы думаете; например вы печатаете другую переменную... или что-то после того, как этот код меняет ее, или

  • это не тот код, который вы выполняете; например вы не перекомпилировали его, и код, который вы используете, больше не соответствует исходному коду.

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

person Stephen C    schedule 10.03.2014
comment
Плохо, строка с плавающей запятой процент_белого_на_экране = (плавающая) otherFloat / totalPixelsFloat; не звонили, большое спасибо ;) - person TiagoM; 11.03.2014