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

Программирование Android

Войти
Регистрация
Восстановить пароль
 
Лорд_Скиминок
0 / 0 / 0
Регистрация: 13.03.2016
Сообщений: 4
#1

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

13.03.2016, 19:29. Просмотров 230. Ответов 7

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

Заранее благодарю всех кто поможет.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
13.03.2016, 19:29     Преобразование числа
Посмотрите здесь:

Преобразование Фурье - Программирование Android
Есть программа в которую нужно добавить Преобразование Фурье, и вывести результат в виде гистограммы. Не могу найти хорошей информации по...

Преобразование картинки в base64 - Программирование Android
Всем привет, помогите пожалуйста понять, что не так, помочь поправить код. Суть задачи преобразовать картинки в base64 и передать на...

Преобразование R.string.* в строку - Программирование Android
Как преобразовать ресурсы R.string.* в обычный String для отображения в UI ? Сама задача - отобразить ProgressDialog, он требует обычные...

Преобразование StringBuffer в String - Программирование Android
Я в интернете нашел примеры преобразования типов. IDE не ругается, но андроид-приложение вылетает. Программа: на форме расположены...

Преобразование string в double - Программирование Android
Такой код не прокатывает: double chislo=Double.parseDouble(R.string.about_text3) Как сделать, чтобы работало?

Преобразование EditText в Double - Программирование Android
Здравствуйте, понемногу изучаю андроид и вот уперся в проблему, точнее в не знание. Есть EditText в нем указал что можно вводить только...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
DemD10
58 / 47 / 12
Регистрация: 03.09.2013
Сообщений: 436
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
102 / 102 / 29
Регистрация: 13.03.2016
Сообщений: 471
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
Сообщений: 436
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+" минут.");
Pablito
2455 / 1900 / 591
Регистрация: 12.05.2014
Сообщений: 6,702
Завершенные тесты: 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     Преобразование числа
Еще ссылки по теме:

Преобразование десятичного числа в троичное, и деление этого числа на 2 - C#
преобразование десятичного числа в троичное число и деление этого числа на 2(как я понял десятичную). результат деления представить в...

Преобразование числа - PHP
Можно ли число преобразовать в такой формат, просто не знаю как это объяснить, если пишешь 12, то преобразует 1;2;3;..;12, если пишешь 4,...

Преобразование числа - C++
Дано натуральное число. От этого числа отнимем суму его цыфр. От нового числа опять отнимем суму его цыфр. Так будем делать до тех пор,...

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


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

Или воспользуйтесь поиском по форуму:
Лорд_Скиминок
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     Преобразование числа
Ответ Создать тему
Опции темы

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