Ява Почему это дает мне «0»? [Дубликат]

1

Так что это часть кода, который я использую, мы должны были только начать с исправления некоторых логических ошибок из-за неправильных ответов. Я нашел пару синтаксических ошибок, которые не позволили компилятору закончить... Я продолжаю получать "0" для fToC...

//declaration statements
final int BOILING_IN_F = 212;
int fToC;
string output;

//there is other code between that has nothing
//to do with outputting the boiling point.

fToC = (5/9) * (BOILING_IN_F - 32);
output = BOILING_IN_F + " in Fahrenheit is " + fToC
             + " in Celsius.";
System.out.println(output); //this is outputting 0 for fToC
System.out.println();

Ответы были полезными, за исключением того, что мне нужно было объявить fToC как double перед компиляцией и запуском программы. Спасибо.

  • 0
    Спасибо, я подумал, что это было что-то подобное. Я перепутал некоторый Python, который я выучил в прошлом семестре, когда пытался изменить формулу. Я ценю помощь, я очень расстроен из-за того, что не вижу этого. Но жизнь продолжается.
  • 0
    Я также понял, что мне нужно объявить fToC как double. После некоторого прочтения в моем тексте я заметил, что Java не разрешит присваивать то, что может быть двойным к int из-за возможной потери данных.
Теги:
class
printing
math
output

3 ответа

2

Вы выполняете целочисленное деление Java с 5/9, что должно привести к другому целому числу - 0, поэтому результат равен 0. Используйте double литералы, чтобы заставить математику с плавающей запятой.

fToC = (5.0/9.0) * (BOILING_IN_F - 32);

Вам нужно, чтобы fToC был double (и изменил string output typo для string output String output).

  • 0
    Не лучше ли изменить int fToC на двойной fToC?
  • 0
    @AngeloAlvisi Правильно; обновлено.
1

(5/9) равен 0 из-за деления. Попробуйте (5.0/9)

Полное выражение должно быть:

fToC = (5.0/9) * (BOILING_IN_F - 32);
1

(5/9) Вы погружаетесь в два целых числа, так что это усечено, поэтому оно равно 0. И вы умножаете это 0 на другое число.

Используйте вместо этого (5.0f/9.0f) чтобы уточнить тот факт, что ваш номер фактически является десятичным числом.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню