Форум программистов, компьютерный форум, киберфорум
Программирование Android
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.80/5: Рейтинг темы: голосов - 5, средняя оценка - 4.80
179 / 74 / 8
Регистрация: 27.12.2012
Сообщений: 408
1

Странный результат при округлении

27.03.2017, 23:36. Просмотров 904. Ответов 10
Метки нет (Все метки)


Почему
Java
1
2
3
edtResult.setText(String.valueOf(Math.round(result * 100.0) / 100.0));
edtResult.setText(String.format("%.2f", result));
edtResult.setText(Double.toString(Math.round(result * 100.0) / 100.0));
одинаково выводят два НУЛЕВЫХ знака после запятой
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
27.03.2017, 23:36
Ответы с готовыми решениями:

Странный результат при минимизации функции
Коллеги, день добрый. Требуется минимизировать функцию \varphi (T) по Т. Использую алгоритм...

Table.sort дает странный результат при <=
crdsClear={{y=56,x=50,symbolName=3,}, {y=56,x=29,symbolName=2,}, {y=56,x=99,symbolName=2,},...

При введении больше 20 чисел программа выдает странный результат
#include &lt;iostream&gt; #include &lt;locale&gt; using namespace std; double t1, t2; int main() {...

Выдает очень странный конечный результат при вычеслении простой математической формулы
#include &lt;stdio.h&gt; #include &lt;Windows.h&gt; main() { SetConsoleCP(1251);...

__________________
Помогаю в написании студенческих работ здесь.
Записывайтесь на профессиональные курсы Android-разработчиков
10
2881 / 2293 / 769
Регистрация: 12.05.2014
Сообщений: 7,978
28.03.2017, 11:05 2
потому что так устроена вселенная
если надо форматировать только для вывода на экран, проще использовать
Java
1
2
        DecimalFormat df = new DecimalFormat("#.##");
        edtResult.setText(df.format(result));
0
179 / 74 / 8
Регистрация: 27.12.2012
Сообщений: 408
01.04.2017, 09:58  [ТС] 3
Импортировал и исправил:
Java
1
2
3
import java.text.DecimalFormat;
DecimalFormat df = new DecimalFormat("#.##");
edtResult.setText(df.format(result));
Теперь выводит только целые числа (как если использовать просто edtResult.setText(result))
0
108 / 102 / 18
Регистрация: 28.06.2015
Сообщений: 489
01.04.2017, 11:00 4
Ну значит у вас результат - целые числа. Например если результат - 4, то так и запишет - 4, а если 4.25, то будет 4.25. Не значащие 0 не выводятся. Или точности не хватает. Попробуйте так, например, если число очень маленькое.
Java
1
DecimalFormat df = new DecimalFormat("#.############");
1
179 / 74 / 8
Регистрация: 27.12.2012
Сообщений: 408
01.04.2017, 11:13  [ТС] 5
В том-то и фишка, что не могут быть все числа целые. result - среднее арифметическое чисел от 1 до 12
На всякий случай кот целиком:
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
import android.graphics.Typeface;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.text.InputType;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.Toast;
 
import java.text.DecimalFormat;
 
public class MainActivity extends AppCompatActivity{
 
    int sum = 0;
    int currCount = 0;
    int maxCount = 1;
    boolean setMaxCount = false;
    Button btn1, btn2, btn3, btn4, btn5, btn6, btn7, btn8, btn9, btn10, btn11, btn12, btnClear, btnC;
    EditText edtResult;
    TextView edtVariables;
 
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
 
        btn1 = (Button)findViewById(R.id.btn1);
        btn2 = (Button)findViewById(R.id.btn2);
        btn3 = (Button)findViewById(R.id.btn3);
        btn4 = (Button)findViewById(R.id.btn4);
        btn5 = (Button)findViewById(R.id.btn5);
        btn6 = (Button)findViewById(R.id.btn6);
        btn7 = (Button)findViewById(R.id.btn7);
        btn8 = (Button)findViewById(R.id.btn8);
        btn9 = (Button)findViewById(R.id.btn9);
        btn10 = (Button)findViewById(R.id.btn10);
        btn11 = (Button)findViewById(R.id.btn11);
        btn12 = (Button)findViewById(R.id.btn12);
        btnClear = (Button)findViewById(R.id.btnClear);
        btnC = (Button)findViewById(R.id.btnC);
        edtResult = (EditText)findViewById(R.id.edtResult);
        edtVariables = (TextView)findViewById(R.id.edtVariables) ;
 
        edtResult.setInputType(InputType.TYPE_NULL);
 
        Typeface typeFace = Typeface.createFromAsset(getAssets(), "fonts/ds-digit.ttf");
        btn1.setTypeface(typeFace);
        btn2.setTypeface(typeFace);
        btn3.setTypeface(typeFace);
        btn4.setTypeface(typeFace);
        btn5.setTypeface(typeFace);
        btn6.setTypeface(typeFace);
        btn7.setTypeface(typeFace);
        btn8.setTypeface(typeFace);
        btn9.setTypeface(typeFace);
        btn10.setTypeface(typeFace);
        btn11.setTypeface(typeFace);
        btn12.setTypeface(typeFace);
        btnClear.setTypeface(typeFace);
        btnC.setTypeface(typeFace);
        edtResult.setTypeface(typeFace);
        edtVariables.setTypeface(typeFace);
 
        View.OnClickListener onClickListener = new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                DecimalFormat df = new DecimalFormat("#.##");
                switch (view.getId()) {
                    case R.id.btn1:
                    case R.id.btn2:
                    case R.id.btn3:
                    case R.id.btn4:
                    case R.id.btn5:
                    case R.id.btn6:
                    case R.id.btn7:
                    case R.id.btn8:
                    case R.id.btn9:
                    case R.id.btn10:
                    case R.id.btn11:
                    case R.id.btn12:
                        int curVal = Integer.parseInt(((Button) view).getText().toString());
                        sum += curVal;
                        if (currCount == 0)
                        {
                            edtVariables.setText(String.valueOf(curVal));
                        }
                        else
                        {
                            edtVariables.setText(edtVariables.getText() + " + " + String.valueOf(curVal));
                        }
                        currCount++;
                        if (setMaxCount)
                        {
                            if (currCount == maxCount)
                            {
                                float result;
                                result = sum / maxCount;
                                edtResult.setText(df.format(result));
                                sum = 0;
                                currCount = 0;
                            }
                            if (currCount == 1)
                            {
                                edtResult.setText("0.0");
                            }
                        }
                        else
                        {
                            float result;
                            result = sum / currCount;
                            edtResult.setText(df.format(result));
                        }
                        break;
                    case R.id.btnClear:
                        sum = 0;
                        currCount = 0;
                        edtResult.setText("0");
                        edtVariables.setText("");
                        break;
                    case R.id.btnC:
 
                        break;
                }
            }
        };
 
        View.OnLongClickListener onLongClickListener = new View.OnLongClickListener() {
            @Override
            public boolean onLongClick(View view) {
                if (view.getId() == R.id.btn1)
                {
                    setMaxCount = false;
                    Toast toast = Toast.makeText(getApplicationContext(), getString(R.string.msgCountManual), Toast.LENGTH_SHORT);
                    toast.show();
                }
                else
                {
                    maxCount = Integer.parseInt(((Button) view).getText().toString());
                    setMaxCount = true;
                    Toast toast = Toast.makeText(getApplicationContext(), getString(R.string.msgCount) + " " + maxCount, Toast.LENGTH_SHORT);
                    toast.show();
                }
                return true;
            }
        };
 
        btn1.setOnLongClickListener(onLongClickListener);
        btn2.setOnLongClickListener(onLongClickListener);
        btn3.setOnLongClickListener(onLongClickListener);
        btn4.setOnLongClickListener(onLongClickListener);
        btn5.setOnLongClickListener(onLongClickListener);
        btn6.setOnLongClickListener(onLongClickListener);
        btn7.setOnLongClickListener(onLongClickListener);
        btn8.setOnLongClickListener(onLongClickListener);
        btn9.setOnLongClickListener(onLongClickListener);
        btn10.setOnLongClickListener(onLongClickListener);
        btn11.setOnLongClickListener(onLongClickListener);
        btn12.setOnLongClickListener(onLongClickListener);
 
        btn1.setOnClickListener(onClickListener);
        btn2.setOnClickListener(onClickListener);
        btn3.setOnClickListener(onClickListener);
        btn4.setOnClickListener(onClickListener);
        btn5.setOnClickListener(onClickListener);
        btn6.setOnClickListener(onClickListener);
        btn7.setOnClickListener(onClickListener);
        btn8.setOnClickListener(onClickListener);
        btn9.setOnClickListener(onClickListener);
        btn10.setOnClickListener(onClickListener);
        btn11.setOnClickListener(onClickListener);
        btn12.setOnClickListener(onClickListener);
        btnClear.setOnClickListener(onClickListener);
        btnC.setOnClickListener(onClickListener);
 
    }
 
}
0
2881 / 2293 / 769
Регистрация: 12.05.2014
Сообщений: 7,978
01.04.2017, 11:37 6
вопрос в чем?
0
179 / 74 / 8
Регистрация: 27.12.2012
Сообщений: 408
01.04.2017, 11:55  [ТС] 7
Вопрос в том что ваш код не работает
Цитата Сообщение от Паблито Посмотреть сообщение
Java
1
2
DecimalFormat df = new DecimalFormat("#.##");
 edtResult.setText(df.format(result));
0
2881 / 2293 / 769
Регистрация: 12.05.2014
Сообщений: 7,978
01.04.2017, 11:56 8
мой код работает
это твой код не работает и непонятно на каких числах и что должно быть в результате
0
179 / 74 / 8
Регистрация: 27.12.2012
Сообщений: 408
01.04.2017, 11:59  [ТС] 9
Ок. Мой код не работает с использованием этой вставки. И если посмотреть выше, можно увидеть сверхсложный код активити, считающий среднее арифметическое из цифр, набраных кнопками. А если еще включить воображение то можно прочитать: "result - среднее арифметическое чисел от 1 до 12"
0
75 / 75 / 57
Регистрация: 07.08.2016
Сообщений: 173
01.04.2017, 12:23 10
Лучший ответ Сообщение было отмечено Singleton как решение

Решение

Singleton, вы делите друг на друга целые числа. Конечно, у вас в результате будет целое.
Сделайте переменную sum типа float или вычисляйте результат так:
Java
1
result = 1. * sum / maxCount;
1
179 / 74 / 8
Регистрация: 27.12.2012
Сообщений: 408
01.04.2017, 12:34  [ТС] 11
Алилуйя) Спасибо. Никак не могу привыкнуть к специфике java и android в частности (имею опыт delphi программирования но он тут скорее мешает)
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
01.04.2017, 12:34

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

Ошибка при округлении
вот пример хочу округлить как обычно большее к большему меньшее к меньшему что по середине не важно...

Ошибка при округлении чисел
Подскажите пожалуйста в чем ошибка,надо округлить число, выдает такую ошибку &quot;Too many actual...

Погрешность при вычислении и округлении
Здравствуйте! Мне надо было написать простенькую функцию, которая переводит дробную часть числа из...

Глюки при округлении числа в Delphi5!
Глюки при округлении числа в Delphi5! Написал функцию округления : Вот пример при трассировке...


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

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

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