Я хочу рассчитать расстояние автомобиля, путешествующего в км. Мне нужно рассчитать расстояние, скорость и время с целым числом. Могу ли я сделать это без двойника?
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;
Подсказка: если вы решите подсчитывать пройденные метры вместо километров, то эффект от округления будет значительно меньше. Так speed * time1 * 1000L / 60
например, как количество пройденных метров...
Да, вы можете, но я предлагаю использовать Double для точных результатов.
double
тоже даст вам неточный результат, но гораздо менее неточный.
можно ли конвертировать минуты в часы без двойника?
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
Конечно, но вы получите неточный результат. Зачем тебе это?