计算器中的平方根公式

Square Root formula in Calculator

好的,我在尝试将平方根方程放入计算器时遇到问题。我想弄清楚表达式生成器。我知道表达式生成器采用加、减、乘、除、等于和括号的数学运算。我正在做的是尝试构建平方根部分。我有一个简单的百分比代码来帮助计算平方根。

在您看到的平方根与百分比中,我正在使用绑定。所以这是两者的代码。

在平方根上是否可以使用表达式生成器?我知道平方根没有绝对公式,除了一个可以与自身相乘的数字,比如数字 4。

Sqrt(4) = 2

binding.btnSqrt.setOnClickListener {
var square = (tv_equation.text.toString().toDouble() / 2)
binding.tvResult.text = square.toString()
}

所以如果你是一个非平方方程

sqrt(23) = 4.79

我如何将其模拟为按钮中的一个功能。我可以使用表达式还是需要使用 Kotlin.math

所以在两者之间我将百分比除以 100。效果很好。

binding.btnPercent.setOnClickListener {
var percentage = (tv_equation.text.toString().toDouble() / 100)
binding.tvResult.text = percentage.toString()
}

我所有的其他按钮都工作正常,所以我只是在计算平方根,然后才能将其发布到 google 播放。

您需要使用某种形式的平方根函数。 正如你在问题中提到的Kotlin Sqrt Function是一个非常合适的选择

binding.btnSqrt.setOnClickListener {
if(!tv_equation.text.isNullOrEmpty){
var number = tv_equation.text.toString().toDouble()
binding.tvResult.text = sqrt(number).toString()
}

您可以使用 Quake 的第一个平方根倒数创建一个 sqrt 函数。 Quake's first inverse square root.

伪代码:

    float InvSqrt(float x){
        float xhalf = 0.5f * x;
        int i = *(int*)&x;            // store floating-point bits in integer
        i = 0x5f3759df - (i >> 1);    // initial guess for Newton's method
        x = *(float*)&i;              // convert new bits into float
        x = x*(1.5f - xhalf*x*x);     // One round of Newton's method
        return x;
    }

所以我要补充的答案与之前的答案更相配。也许这会在将来帮助一些人。此解决方案还将小数 space 限制为 4 位小数。

binding.btnSqrt.setOnClickListener{
        val df = DecimalFormat("#.####")
        if(!tv_equation.text.isNullOrEmpty())
        {
            val number = tv_equation.text.toString().toDouble()
            binding.tvResult.text = df.format(sqrt(number))
        }
    }

您可以将 val df = DecimalFormat("#.####") 其中 # 调整为您想要的小数位数。