Округление калькулятора, чтобы вписаться в EditText

#android #kotlin #rounding #calculator

#Android #kotlin #округление #калькулятор

Вопрос:

У меня EditText ограничен 14 символами. Это работает, чтобы ограничить количество вводимых пользователем данных, но просто отсекает числа, превышающие 14 символов (даже после десятичной дроби) в ответе. Итак, две проблемы, с которыми мне нужна помощь. Как мне сделать так, чтобы ошибки, если значение больше 14 цифр, и всегда округлялись до наилучшего места (например, если сумма равна 164541254.4568727 (17 символов), она будет округляться до 164541254.4569 (14 символов) или 12.9876543210987 округляется до 12.987654321111)

Равный код кнопки (потому что я думаю, что именно здесь мне нужно будет поместить код):

 fun equal(view: View) {
    secondnum = editText.text.toString()
    decpressed = 0
    var sum = 0.0
    when (op) {
        " " -> {
            sum = (firstnum.toDouble()   secondnum.toDouble())
        }
        "-" -> {
            sum = (firstnum.toDouble() - secondnum.toDouble())
        }
        "*" -> {
            sum = (firstnum.toDouble() * secondnum.toDouble())
        }
        "/" -> {
            if (secondnum == "0") {
                Toast.makeText(this, "Can not divide by 0!", Toast.LENGTH_LONG).show()
                editText.setText("0")
                textView.text = ""
            } else {
                sum = (firstnum.toDouble() / secondnum.toDouble())
            }
        }
    }
    val out = DecimalFormat("#.##########")
    out.roundingMode = RoundingMode.HALF_EVEN
    editText.setText(out.format(sum))
    textView.text = "$firstnum $op $secondnum ="
    zero = true
}
  

Если требуется другой код, пожалуйста, запросите его.

Комментарии:

1. Вы хотите ограничить количество десятичных цифр или общую длину?

2. вы должны создать условие, например, сначала обрезать сумму до 13 символов. затем создайте условие для остальных символов

3. @VSSChaitanyaChavali мои десятичные цифры ограничены DecimalFormat .. но когда целое число больше 1 цифры, оно не округляет десятичное число, оно просто обрезает конец и то же самое с десятичными числами.. если число больше 14 цифр, оно просто обрезает конец

4. @andika_kurniawan можете ли вы объяснить, что вы имеете в виду в ответе?