Форум программистов, компьютерный форум CyberForum.ru

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

Восстановить пароль Регистрация
 
Лорд_Скиминок
0 / 0 / 0
Регистрация: 13.03.2016
Сообщений: 4
13.03.2016, 19:29     Преобразование числа #1
Приветствую камрады.
Есть такая задача. В результате определенных вычислений получаем десятичное число, например 0.2 или 3.7654.
Пользователь должен на экране увидеть не его а сообщение вида: время обработки займет Ч часов и М минут.
то есть из 0.2 должно быть 0 часов 12 минут а из 3.7654 должно быть 3 часа 46 минут.
Математически я это провожу так: беру число до точки - это и есть часы. затем беру число после точки с 0 перед ним и умножаю его на 60. это получаются минуты.
Проблема в том, что я уже всю голову сломал как реализовать это программно.

Заранее благодарю всех кто поможет.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
DemD10
58 / 47 / 12
Регистрация: 03.09.2013
Сообщений: 424
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;// твои минуты
Насчет регулярного чет неуверен) Но вроде как точка так указывается)
Лорд_Скиминок
0 / 0 / 0
Регистрация: 13.03.2016
Сообщений: 4
13.03.2016, 21:47  [ТС]     Преобразование числа #3
Спасибо. Попробую реализовать в своей проге отпишусь.
OlegJV
 Аватар для OlegJV
99 / 99 / 29
Регистрация: 13.03.2016
Сообщений: 451
13.03.2016, 23:54     Преобразование числа #4
И к чему такие сложности?
Java
1
2
3
double a = 3.1234;
int hour = (int) a;
double min = a - hour;
DemD10
58 / 47 / 12
Регистрация: 03.09.2013
Сообщений: 424
14.03.2016, 00:10     Преобразование числа #5
Ну да)) Но у меня времени час ночи и я чет сначала тоже подумал, потом про 0.2 и меня переклинило))
Лорд_Скиминок
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+" минут.");
Паблито
не спать!
1868 / 1602 / 493
Регистрация: 12.05.2014
Сообщений: 5,796
Завершенные тесты: 1
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);
    }
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
15.03.2016, 11:29     Преобразование числа
Еще ссылки по теме:

Автоматическое преобразование текста ресурсов в число Android
Преобразование кода под Fragment'ы Android
Преобразование 2 форматов дат к одному Android
Android Преобразование string в double
Android Преобразование картинки в base64

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

Или воспользуйтесь поиском по форуму:
Лорд_Скиминок
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+ " минут.");
Yandex
Объявления
15.03.2016, 11:29     Преобразование числа
Ответ Создать тему

Метки
округление, преобразование, числа
Опции темы

Текущее время: 19:42. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru