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

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

Войти
Регистрация
Восстановить пароль
 
AlexseyTsvetkov
0 / 0 / 0
Регистрация: 28.04.2015
Сообщений: 57
#1

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

12.05.2015, 09:45. Просмотров 576. Ответов 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));
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
12.05.2015, 09:45     Вычисление с тремя знаками после запятой
Посмотрите здесь:
Хранение координат (15 знаков после запятой) Android
Ограничение количества символов после запятой в TextView Android
Android Передача данных между тремя Activity
Скрытие Navigation Bar (нижнее мню с тремя кнопками) Android
C (СИ) Вывод числа с тремя знаками после запятой
Результат деления вывести на экран тремя знаками после запятой. Turbo Pascal
Lazarus Найти частное от деления первого числа на второе, и вывести его с тремя знаками после запятой
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Pablito
2419 / 1864 / 583
Регистрация: 12.05.2014
Сообщений: 6,604
Завершенные тесты: 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);
AlexseyTsvetkov
0 / 0 / 0
Регистрация: 28.04.2015
Сообщений: 57
12.05.2015, 11:02  [ТС]     Вычисление с тремя знаками после запятой #3
Спасибо, но дает ошибку. Не связано это с тем, что данные выводятся из памяти?
Pablito
2419 / 1864 / 583
Регистрация: 12.05.2014
Сообщений: 6,604
Завершенные тесты: 1
12.05.2015, 11:05     Вычисление с тремя знаками после запятой #4
какую?
AlexseyTsvetkov
0 / 0 / 0
Регистрация: 28.04.2015
Сообщений: 57
12.05.2015, 11:31  [ТС]     Вычисление с тремя знаками после запятой #5
Просто выходит из программы.
Pablito
2419 / 1864 / 583
Регистрация: 12.05.2014
Сообщений: 6,604
Завершенные тесты: 1
12.05.2015, 11:36     Вычисление с тремя знаками после запятой #6
в логах что-то должно писать
DemD10
58 / 47 / 12
Регистрация: 03.09.2013
Сообщений: 434
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(Ваше число, сколько знаков));
Spelcrawler
526 / 496 / 111
Регистрация: 12.03.2014
Сообщений: 1,648
Завершенные тесты: 1
12.05.2015, 19:51     Вычисление с тремя знаками после запятой #8
DemD10, как-то сложно слишком.
Java
1
String.format("%.3f", число);
Вместо тройки любое число - количество знаков после запятой.
AlexseyTsvetkov
0 / 0 / 0
Регистрация: 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);
Эмулятор пишет, что приложение остановлено.
Spelcrawler
526 / 496 / 111
Регистрация: 12.03.2014
Сообщений: 1,648
Завершенные тесты: 1
12.05.2015, 20:41     Вычисление с тремя знаками после запятой #10
AlexseyTsvetkov, значит ерунда у вас в строках, которая не парсится в double.
CoolMind
418 / 401 / 65
Регистрация: 06.10.2012
Сообщений: 1,723
13.05.2015, 00:37     Вычисление с тремя знаками после запятой #11
AlexseyTsvetkov, попробуйте комментировать строчки и смотреть, какая из них приводит к ошибке.
Также хотелось бы знать, чем равно Default. Вы уверены, что "MaxdosageChange" существует?
AlexseyTsvetkov
0 / 0 / 0
Регистрация: 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));
CoolMind
418 / 401 / 65
Регистрация: 06.10.2012
Сообщений: 1,723
13.05.2015, 18:50     Вычисление с тремя знаками после запятой #13
AlexseyTsvetkov, у вас же написано: int c = ... Логично, что будет целое число. Выше был пример с double.
AlexseyTsvetkov
0 / 0 / 0
Регистрация: 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));
Pablito
2419 / 1864 / 583
Регистрация: 12.05.2014
Сообщений: 6,604
Завершенные тесты: 1
13.05.2015, 19:13     Вычисление с тремя знаками после запятой #15
в моем коде стоит double
даже списать правильно не может....
AlexseyTsvetkov
0 / 0 / 0
Регистрация: 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);
Pablito
2419 / 1864 / 583
Регистрация: 12.05.2014
Сообщений: 6,604
Завершенные тесты: 1
14.05.2015, 08:29     Вычисление с тремя знаками после запятой #17
Вычисление с тремя знаками после запятой
CoolMind
418 / 401 / 65
Регистрация: 06.10.2012
Сообщений: 1,723
14.05.2015, 22:43     Вычисление с тремя знаками после запятой #18
AlexseyTsvetkov, или используйте отладчик (Debug) и смотрите после каждой строчки значения переменных, или выведите их в лог, используя команду Log.i("*********", String.valueOf(c)) (по очереди меняйте имена переменных и смотрите, что там выводится).
fgtmenow
75 / 75 / 7
Регистрация: 29.03.2012
Сообщений: 254
15.05.2015, 14:25     Вычисление с тремя знаками после запятой #19
offtop:
команда тренированных отладчиков :D
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
18.05.2015, 21:39     Вычисление с тремя знаками после запятой
Еще ссылки по теме:
Lazarus Ввести два числа, найти частное от деления первого на второе, и вывести его с тремя знаками после запятой
C++ Рандомные дроби с 2-3 знаками после запятой
C++ Вывести двумерный массив с 3 знаками после запятой
C# .NET 4.x Дробные числа с двумя знаками после запятой
Вывести сумму четырех чисел с 4 знаками после запятой C++

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

Или воспользуйтесь поиском по форуму:
AlexseyTsvetkov
0 / 0 / 0
Регистрация: 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)));
Yandex
Объявления
18.05.2015, 21:39     Вычисление с тремя знаками после запятой
Ответ Создать тему
Опции темы

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