Умножение значений с плавающей точкой «возможное преобразование потерь с двойного на плавающее»

1

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

Вот мой код:

import java.util.Scanner;

public class problem1 {
    public static void main (String args[]) {
        float m;
        float km;

        Scanner input=new Scanner(System.in);

        System.out.print("Please enter a distance in kilometers:");
        km=input.nextFloat();
        m=km*0.621371;
        System.out.println("This is equal to: "+m);
    }
}

Это дает мне ошибку, говоря:

Incompatible types:possible lossy conversion from double to float.
  • 0
    СОВЕТ: Числа с плавающей точкой по умолчанию имеют тип double .
  • 1
    если вы хотите использовать float, используйте f в конце, как 0.621371f
Показать ещё 2 комментария
Теги:
floating-point-conversion

3 ответа

1
Лучший ответ

Вы пытаетесь установить double переменную float

Чтобы исправить, измените эту строку

m=km*0.621371;

в

m=km*0.621371f;
  • 0
    Использование магических чисел считается плохой практикой программирования. Глядя только на этот код, вы не можете сказать, что означает 0.621371?
1

Вы должны определить постоянную переменную как float, так как km читается как float.

final float KM_TO_ML = 0.621371F;
m = km * KM_TO_ML;
1

Значение 0.621371 является double литералом, поэтому при умножении значения km double. Сохранение double продукта обратно в m будет преобразованием, которое может потерять данные (double to float).

Чтобы сохранить данные в виде float, используйте литерал с float, а f на конце:

m=km*0.621371f;

Обычно double результат для результатов был бы прекрасен, поэтому вы могли бы просто изменить типы данных m и km в double.

Ещё вопросы

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