计算器中的平方根公式
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("#.####")
其中 #
调整为您想要的小数位数。
好的,我在尝试将平方根方程放入计算器时遇到问题。我想弄清楚表达式生成器。我知道表达式生成器采用加、减、乘、除、等于和括号的数学运算。我正在做的是尝试构建平方根部分。我有一个简单的百分比代码来帮助计算平方根。
在您看到的平方根与百分比中,我正在使用绑定。所以这是两者的代码。
在平方根上是否可以使用表达式生成器?我知道平方根没有绝对公式,除了一个可以与自身相乘的数字,比如数字 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("#.####")
其中 #
调整为您想要的小数位数。