Форум программистов, компьютерный форум, киберфорум
Наши страницы
Программирование Android
Войти
Регистрация
Восстановить пароль
 
AlexseyTsvetkov
0 / 0 / 1
Регистрация: 28.04.2015
Сообщений: 57
#1

Вычисление с тремя знаками после запятой - Программирование Android

12.05.2015, 09:45. Просмотров 709. Ответов 19
Метки нет (Все метки)

Подскажите как прописать формат, чтобы при вычислении результат был с 3 знаками после запятой.
Java
1
2
3
4
5
 SharedPreferences sharedPreferences = getSharedPreferences("MyData",MODE_PRIVATE);
    String a=sharedPreferences.getString("MaxdosageChange",Default);
    String b=sharedPreferences.getString("MaxFlowChange",Default);
    int c = (Integer.parseInt(a)*Integer.parseInt(b))/1000;
    edit_Text4.setText(String.valueOf(c));
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
12.05.2015, 09:45
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Вычисление с тремя знаками после запятой (Программирование Android):

Хранение координат (15 знаков после запятой)
Доброго времени суточек. Необходимо хранить координаты штатов. Сразу что-то...

Ограничение количества символов после запятой в TextView
Здравствуйте. Есть поле TextView После математических вычислений в него...

Вывод числа с тремя знаками после запятой
Подскажите, как исправить код, чтобы он не выводил 3 знака после запятой. //...

Результат деления вывести на экран тремя знаками после запятой.
Написать программу запрашивающую у пользователя два целых числа: a (делимое) и...

Найти частное от деления первого числа на второе, и вывести его с тремя знаками после запятой
1. Оператор присваивания. Ввести два вещественных числа, найти частное от...

Ввести два числа, найти частное от деления первого на второе, и вывести его с тремя знаками после запятой
Задание: Ввести два вещественных числа, найти частное от деления первого на...

19
Pablito
2653 / 2135 / 726
Регистрация: 12.05.2014
Сообщений: 7,450
Завершенные тесты: 1
12.05.2015, 09:55 #2
у тебя в int все парсится, откуда там знаки после запятой?

Java
1
2
3
Double c = (Double.parseDouble(a)*Double.parseDouble(b));
String str = String.format("%.3f", c);
edit_Text4.setText(str);
0
AlexseyTsvetkov
0 / 0 / 1
Регистрация: 28.04.2015
Сообщений: 57
12.05.2015, 11:02  [ТС] #3
Спасибо, но дает ошибку. Не связано это с тем, что данные выводятся из памяти?
0
Pablito
2653 / 2135 / 726
Регистрация: 12.05.2014
Сообщений: 7,450
Завершенные тесты: 1
12.05.2015, 11:05 #4
какую?
0
AlexseyTsvetkov
0 / 0 / 1
Регистрация: 28.04.2015
Сообщений: 57
12.05.2015, 11:31  [ТС] #5
Просто выходит из программы.
0
Pablito
2653 / 2135 / 726
Регистрация: 12.05.2014
Сообщений: 7,450
Завершенные тесты: 1
12.05.2015, 11:36 #6
в логах что-то должно писать
0
DemD10
58 / 47 / 12
Регистрация: 03.09.2013
Сообщений: 443
12.05.2015, 13:46 #7
Java
1
2
3
public BigDecimal roundUp(double value, int digits){
        return new BigDecimal(""+value).setScale(digits, BigDecimal.ROUND_HALF_UP);
    }
Вообщем как-то так, применять так:

Java
1
String.valueOf(roundUp(Ваше число, сколько знаков));
0
Spelcrawler
531 / 501 / 113
Регистрация: 12.03.2014
Сообщений: 1,666
Завершенные тесты: 1
12.05.2015, 19:51 #8
DemD10, как-то сложно слишком.
Java
1
String.format("%.3f", число);
Вместо тройки любое число - количество знаков после запятой.
0
AlexseyTsvetkov
0 / 0 / 1
Регистрация: 28.04.2015
Сообщений: 57
12.05.2015, 20:09  [ТС] #9
Не получается.
Java
1
2
3
4
5
6
 SharedPreferences sharedPreferences = getSharedPreferences("MyData",MODE_PRIVATE);
    String a=sharedPreferences.getString("MaxdosageChange",Default);
    String b=sharedPreferences.getString("MaxFlowChange",Default);
    Double c = (Double.parseDouble(a)*Double.parseDouble(b));
    String str = String.format("%.3f", c);
    edit_Text4.setText(str);
Эмулятор пишет, что приложение остановлено.
0
Spelcrawler
531 / 501 / 113
Регистрация: 12.03.2014
Сообщений: 1,666
Завершенные тесты: 1
12.05.2015, 20:41 #10
AlexseyTsvetkov, значит ерунда у вас в строках, которая не парсится в double.
0
CoolMind
421 / 404 / 65
Регистрация: 06.10.2012
Сообщений: 1,732
13.05.2015, 00:37 #11
AlexseyTsvetkov, попробуйте комментировать строчки и смотреть, какая из них приводит к ошибке.
Также хотелось бы знать, чем равно Default. Вы уверены, что "MaxdosageChange" существует?
0
AlexseyTsvetkov
0 / 0 / 1
Регистрация: 28.04.2015
Сообщений: 57
13.05.2015, 18:15  [ТС] #12
Рабочий вариант, но вычисляется целое число.
Java
1
2
3
4
5
SharedPreferences sharedPreferences = getSharedPreferences("MyData",MODE_PRIVATE);
    String a=sharedPreferences.getString("MaxdosageChange",Default);
    String b=sharedPreferences.getString("MaxFlowChange",Default);
    int c = (Integer.parseInt(a)*Integer.parseInt(b))/1000;
    edit_Text4.setText(String.valueOf(c));
0
CoolMind
421 / 404 / 65
Регистрация: 06.10.2012
Сообщений: 1,732
13.05.2015, 18:50 #13
AlexseyTsvetkov, у вас же написано: int c = ... Логично, что будет целое число. Выше был пример с double.
0
AlexseyTsvetkov
0 / 0 / 1
Регистрация: 28.04.2015
Сообщений: 57
13.05.2015, 19:07  [ТС] #14
Это рабочий вариант с Double, но тоже получается целое число
Java
1
2
3
4
5
SharedPreferences sharedPreferences = getSharedPreferences("MyData",MODE_PRIVATE);
    String a=sharedPreferences.getString("MaxdosageChange",Default);
    String b=sharedPreferences.getString("MaxFlowChange",Default);
   int c = (int) (Double.parseDouble(a)*Double.parseDouble(b)/1000);
   edit_Text4.setText(String.valueOf(c));
0
Pablito
2653 / 2135 / 726
Регистрация: 12.05.2014
Сообщений: 7,450
Завершенные тесты: 1
13.05.2015, 19:13 #15
в моем коде стоит double
даже списать правильно не может....
2
AlexseyTsvetkov
0 / 0 / 1
Регистрация: 28.04.2015
Сообщений: 57
13.05.2015, 20:33  [ТС] #16
Еще раз попробовал этот вариант, не работает
Java
1
2
3
4
5
6
7
8
SharedPreferences sharedPreferences = getSharedPreferences("MyData",MODE_PRIVATE);
    String a=sharedPreferences.getString("MaxdosageChange",Default);
    String b=sharedPreferences.getString("MaxFlowChange",Default);
   //int c = (int) (Double.parseDouble(a)*Double.parseDouble(b)/1000);
   //edit_Text4.setText(String.valueOf(c));
    Double c = (Double.parseDouble(a)*Double.parseDouble(b));
    String str = String.format("%.3f", c);
    edit_Text4.setText(str);
0
Pablito
2653 / 2135 / 726
Регистрация: 12.05.2014
Сообщений: 7,450
Завершенные тесты: 1
14.05.2015, 08:29 #17
http://www.cyberforum.ru/android-dev/thread1443820.html#post7602214
0
CoolMind
421 / 404 / 65
Регистрация: 06.10.2012
Сообщений: 1,732
14.05.2015, 22:43 #18
AlexseyTsvetkov, или используйте отладчик (Debug) и смотрите после каждой строчки значения переменных, или выведите их в лог, используя команду Log.i("*********", String.valueOf(c)) (по очереди меняйте имена переменных и смотрите, что там выводится).
0
fgtmenow
75 / 75 / 7
Регистрация: 29.03.2012
Сообщений: 257
15.05.2015, 14:25 #19
offtop:
команда тренированных отладчиков
0
AlexseyTsvetkov
0 / 0 / 1
Регистрация: 28.04.2015
Сообщений: 57
18.05.2015, 21:39  [ТС] #20
Заработало!!!
Java
1
2
3
4
5
6
7
 SharedPreferences sharedPreferences = getSharedPreferences("MyData",MODE_PRIVATE);
        String a=sharedPreferences.getString("MaxFlowChange", Default);
        String b=sharedPreferences.getString("SludgeConc",Default);
        Float d = Float.parseFloat((edit_Text12.getText().toString()));
        Float c = (Float.parseFloat(a)*1000*Float.parseFloat(b))*100/(100-d)/1000000;
        String cF = String.format("%.3f",c);
        edit_Text14.setText((String.valueOf(cF)));
0
18.05.2015, 21:39
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
18.05.2015, 21:39
Привет! Вот еще темы с решениями:

Рандомные дроби с 2-3 знаками после запятой
Помогите пожалуйста сгенерировать 10 000 чисел в интервале от 2 до 8 при помощи...

Вывести двумерный массив с 3 знаками после запятой
всем привет) мне нужно вывести двумерный массив с 3 знаками после запятой ...

Дробные числа с двумя знаками после запятой
Всем привет! У меня возникла такая проблема. Для начала опишу переменные:...

Вывести вещественное число с 4 знаками после запятой
Условие задачи: Введите 4 действительных числа и выведите их сумму с 4 знаками...


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

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

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