0 / 0 / 0
Регистрация: 13.03.2016
Сообщений: 4
1

Преобразование числа

13.03.2016, 19:29. Показов 476. Ответов 7

Приветствую камрады.
Есть такая задача. В результате определенных вычислений получаем десятичное число, например 0.2 или 3.7654.
Пользователь должен на экране увидеть не его а сообщение вида: время обработки займет Ч часов и М минут.
то есть из 0.2 должно быть 0 часов 12 минут а из 3.7654 должно быть 3 часа 46 минут.
Математически я это провожу так: беру число до точки - это и есть часы. затем беру число после точки с 0 перед ним и умножаю его на 60. это получаются минуты.
Проблема в том, что я уже всю голову сломал как реализовать это программно.

Заранее благодарю всех кто поможет.
__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
13.03.2016, 19:29
Ответы с готовыми решениями:

Преобразование десятичного числа в троичное, и деление этого числа на 2
преобразование десятичного числа в троичное число и деление этого числа на 2(как я понял...

Преобразование числа
Задача заключается в том, чтобы убрать числа под нечетным номер из заданного числа. Вот мой код...

Преобразование числа
Имеется число n в границах от 00 до 99, записанное двумя цифрами (если число меньше 10, то перед...

Преобразование в числа
Добрый день! Подскажите пожалуйста, как можно сделать.. В функцию передается строка - fun("1/4")...

7
59 / 48 / 13
Регистрация: 03.09.2013
Сообщений: 474
13.03.2016, 19:51 2
Java
1
2
3
4
5
6
            double a = 3.7654;
            String str = Double.toString(a);
            String[] part = str.split("\\.");
            String hour = part[0]; // твои часы
            String min = "0."+part[1];
            double finalMin = Double.parseDouble(min)*60;// твои минуты
Насчет регулярного чет неуверен) Но вроде как точка так указывается)
1
0 / 0 / 0
Регистрация: 13.03.2016
Сообщений: 4
13.03.2016, 21:47  [ТС] 3
Спасибо. Попробую реализовать в своей проге отпишусь.
0
104 / 103 / 29
Регистрация: 13.03.2016
Сообщений: 474
13.03.2016, 23:54 4
И к чему такие сложности?
Java
1
2
3
double a = 3.1234;
int hour = (int) a;
double min = a - hour;
0
59 / 48 / 13
Регистрация: 03.09.2013
Сообщений: 474
14.03.2016, 00:10 5
Ну да)) Но у меня времени час ночи и я чет сначала тоже подумал, потом про 0.2 и меня переклинило))
1
0 / 0 / 0
Регистрация: 13.03.2016
Сообщений: 4
14.03.2016, 19:33  [ТС] 6
В итоге я применил смешанный вариант кода. Так как оба не вполне соответствовали моим целям. ниже собственно мой вариант. Жду критики и подсказок по оптимизации.
Java
1
2
3
4
5
6
7
8
9
                    str = Double.toString(c);
                    String[] part = str.split("\\.");
                    hour = part[0]; //часы
                    String min = "0."+part[1];
                    m = Double.parseDouble(min)*60;//минуты
                    finalMin = Double.toString(m);
                    Min = new BigDecimal(finalMin).setScale(0, RoundingMode.UP).doubleValue();//округляем минуты до целого
                    int Min2 = (int)Min;
                    result.setText("Максимальное время обработки "+hour+" часов "+Min2+" минут.");
0
2882 / 2294 / 769
Регистрация: 12.05.2014
Сообщений: 7,978
14.03.2016, 19:56 7
Java
1
2
3
4
5
    public static String getElapsedTime(double t) {
        int ch = (int) t;
        int min = (int) Math.round((t - ch) * 3600 / 60);
        return String.format("Прошло %d часов %d минут ", ch, min);
    }
1
0 / 0 / 0
Регистрация: 13.03.2016
Сообщений: 4
15.03.2016, 11:29  [ТС] 8
Тщательно подумав и попробовав каждый из приведенных здесь вариантов родился вот такой вариант. Отрабатывает очень точно в меру требований к проге. Переменные еще конечно надо причесать, в том плане что имена читаемые сделать, но мне в данный момент было важнее чтобы все работало как надо. Так что всем большое спасибо за помощь.

Java
1
2
3
4
5
6
7
8
c = t*(a*b)/con;
                    hour = (int)c;
                    Min = c - hour;
                    m = Min*60;
                    finalMin = new BigDecimal(m).setScale(2, RoundingMode.UP).doubleValue();
                    minut = (int)finalMin;
 
                    result.setText("Время обработки составит " +hour+ " часов " +minut+ " минут.");
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
15.03.2016, 11:29
Помогаю со студенческими работами здесь

Преобразование числа
Дано натуральное число. От этого числа отнимем суму его цыфр. От нового числа опять отнимем суму...

Преобразование числа
Как преобразовать полученное число в число с плавающей точкой? Т.е. если пришло 5, то на выходе...

Преобразование числа
Как полученное число, например 2 преобразовать в 2.00 ?

Преобразование числа
Можно ли число преобразовать в такой формат, просто не знаю как это объяснить, если пишешь 12, то...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2022, CyberForum.ru