Могу ли я преобразовать минуты в часы без двойного числа?

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

System.out.println("Please enter the speed of the first train: "); 
int speed1 = scan.nextInt();
System.out.println("Please enter the travel time (minutes) of the first train: ");
int time1 = scan.nextInt();
final int DISTANCE_FIRST_TRAIN = (speed1*time1) / 60;

Конечно, но вы получите неточный результат. Зачем тебе это?

Federico klez Culloca 29.03.2023 19:30

Подсказка: если вы решите подсчитывать пройденные метры вместо километров, то эффект от округления будет значительно меньше. Так speed * time1 * 1000L / 60 например, как количество пройденных метров...

Jon Skeet 29.03.2023 19:36

Да, вы можете, но я предлагаю использовать Double для точных результатов.

idris_djoudi 29.03.2023 19:38
double тоже даст вам неточный результат, но гораздо менее неточный.
MC Emperor 29.03.2023 23:28
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
2
4
72
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

можно ли конвертировать минуты в часы без двойника?

long hours = Duration.ofMinutes( x ).toHours() ;

Но я сомневаюсь, что это то, что вы действительно хотите для своего конкретного сценария расчета.

Ответ принят как подходящий

Вот один из способов, основанный на небольшой модификации вашего кода. На самом деле это не конвертирует минуты в часы, но использует int манипуляции для преобразования необработанного продукта в довольно точное расстояние. Я генерирую значения speed и time случайным образом и делаю это 10 раз, чтобы показать сравнение между двойным ответом и ответом int. Версия int почти идентична двойной версии с двумя десятичными знаками.

for (int i = 0; i < 10; i++) {

    int speed1 = r.nextInt(100) + 50;
    int time1 = r.nextInt(50) + 200;

    double dist = (double) speed1 * time1 / 60.;
    int time_x_speed = time1 * speed1;
    int distanceWhole = time_x_speed / 60;
    int distanceFraction = time_x_speed % 60 * 100 / 60;
    String result = distanceWhole + (distanceFraction <= 9 ?".0" : ".")  + distanceFraction;
    System.out.printf(
            "Distance: using double = %.2f   using ints = %s%n", dist,
            result);

}

отпечатки

Distance: using double = 547.55   using ints = 547.55
Distance: using double = 260.33   using ints = 260.33
Distance: using double = 282.82   using ints = 282.81
Distance: using double = 226.67   using ints = 226.66
Distance: using double = 401.20   using ints = 401.20
Distance: using double = 247.07   using ints = 247.06
Distance: using double = 526.70   using ints = 526.70
Distance: using double = 326.67   using ints = 326.66
Distance: using double = 294.80   using ints = 294.80
Distance: using double = 298.80   using ints = 298.80

Другие вопросы по теме