вывод double без округления

190
21 января 2022, 18:00

Это приложение - простой калькулятор, мне нужно при делении задать TextView результат, и так чтобы это было без округления, в моём случае округление идёт до целых чисел

`public class MainActivity extends AppCompatActivity implements View.OnClickListener {
    Button btnPlus;
    Button btnMinus;
    Button btnMultiply;
    Button btnShare;
    TextView tvOut;
    EditText etFirst;
    EditText etSecond;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        btnMinus = findViewById(R.id.btnMinus);
        btnPlus = findViewById(R.id.btnPlus);
        btnMultiply = findViewById(R.id.btnMultiply);
        btnShare = findViewById(R.id.btnShare);
        tvOut = findViewById(R.id.tvOut);
        etFirst = findViewById(R.id.etFirst);
        etSecond = findViewById(R.id.etSecond);
        btnMinus.setOnClickListener(this);
        btnPlus.setOnClickListener(this);
        btnShare.setOnClickListener(this);
        btnMultiply.setOnClickListener(this);
    }
    public int getFirstNumber() {
        int first;
        first = Integer.parseInt(etFirst.getText().toString());
        return first;
    }
    public int getSecondNumber() {
        int second;
        second = Integer.parseInt(etSecond.getText().toString());
        return second;
    }
    @Override
    public void onClick(View v) {
        int out;
        int first = getFirstNumber();
        int second = getSecondNumber();
        String outS;
        switch (v.getId()) {
            case (R.id.btnPlus):
                out = first + second;
                outS = Integer.toString(out);
                tvOut.setText(outS);
                break;
            case (R.id.btnMinus):
                out = first - second;
                outS = Integer.toString(out);
                tvOut.setText(outS);
                break;
            case (R.id.btnMultiply):
                out = first*second;
                outS = Integer.toString(out);
                tvOut.setText(outS);
                break;
            case(R.id.btnShare):
                double outD;
                outD = first/second;
                StringBuffer sb = new StringBuffer(String.valueOf(outD));
                tvOut.setText(Double.toString(outD));
                break;
        }
    }
}
Answer 1

Из за того, что у обоих переменных тип int происходит целочисленное деление. Нужно хотя бы одну привести к вещественном типу:

outD = (double)first/second;

Тогда и результат будет вещественным.

READ ALSO
IntelliJ IDEA 2019.2 x64. Ошибка при попытке запуска кода на Java

IntelliJ IDEA 2019.2 x64. Ошибка при попытке запуска кода на Java

Создал новый проект на базе JavaFXЗапускаю автоматически сгенерированный код, ничего не менял

105
Получение данных из application.properties

Получение данных из application.properties

Пишу небольшое приложение по работе, и надо создать класс для использования его в RestController Но дело в том, что я никак не могу получить данные...

297
Расположение файлов в Maven проекте

Расположение файлов в Maven проекте

В Maven-проект необходимо добавить txt файл, из которого программа будет считывать данныеГде мне следует его хранить: в src/main/resources или создать...

144
Можно ли с помощью Arrays.sort(…) отсортировать массив «наших» объектов?

Можно ли с помощью Arrays.sort(…) отсортировать массив «наших» объектов?

Столкнулся с таким вот вопросом из списка на подготовку к собеседованию на junior java и не могу раздуплиться никак

94