Android 计算器四舍五入以适应编辑文本

Android 计算器四舍五入以适应编辑文本,android,kotlin,rounding,calculator,Android,Kotlin,Rounding,Calculator,我的编辑文本限制为14个字符。这可以限制用户输入的数字,但它只会在答案中删除大于14个字符(甚至在小数点后)的数字。所以,有两个问题我需要帮助。如何使其在值大于14位时出错,并始终四舍五入到最佳位置(例如,如果总和为164541254.4568727(17char),它将四舍五入到164541254.4569(14char)或12.9876543210987四舍五入到12.9876543211) 相等按钮代码(因为我认为这是我需要放置代码的地方): 如果需要其他代码,请申请。是否要限制小数位数或

我的编辑文本限制为14个字符。这可以限制用户输入的数字,但它只会在答案中删除大于14个字符(甚至在小数点后)的数字。所以,有两个问题我需要帮助。如何使其在值大于14位时出错,并始终四舍五入到最佳位置(例如,如果总和为164541254.4568727(17char),它将四舍五入到164541254.4569(14char)或12.9876543210987四舍五入到12.9876543211)

相等按钮代码(因为我认为这是我需要放置代码的地方):


如果需要其他代码,请申请。

是否要限制小数位数或总长度?您应该创建一个条件,例如先将总和修剪为13个字符。然后为其余部分创建一个条件characters@VSSChaitanyaChavali我的十进制数字受十进制格式限制。。但当整数超过1位时,它不会对十进制数进行四舍五入,它只是去掉了小数的末尾,与非十进制数相同。。如果数字超过14位,它只需删除end@andika_kurniawan你能解释一下你的回答是什么意思吗?
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
}