c# - 获取应将 2 提高到哪个数字以获取 x 的函数
问题描述
在 2^x = n 中找到 x。这就是我想要做的。(它不是为了任何特定目的。它只是看起来不错。)这是我写的,但它不起作用。
public double f(double x)
{
double result = 0;
double increaser = 1;
double subtract = result - increaser;
double add = result + increaser;
while(true)
{
if((Math.Pow(2,result) == x) || increaser == 0.0001)
{
break;
}
double sP = Math.Abs(Math.Pow(2,subtract) - x);
double aP = Math.Abs(Math.Pow(2,add) - x);
double nP = Math.Abs(Math.Pow(2,result) - x);
if((sP < nP) && (sP < aP))
{
result -= increaser;
}
else if((aP < nP) && (aP < sP))
{
result += increaser;
}
else if((nP < sP) && (nP < aP))
{
increaser = increaser / 10;
}
}
return result;
}
解决方案
这个函数称为对数:
return Math.Log2(n);
推荐阅读
- c# - 从 excel 文件中替换无效的 XML 字符并将其写回磁盘会导致文件在 MS Excel 中打开时出现损坏错误
- c# - 如何在 mongo DB 中保存对先前版本对象的引用
- machine-learning - 如何决定有多少卷积和反卷积应用于 GAN?
- xslt - 我想要使用 XSL-FO 在最后一页、第一页、奇数页、偶数页上使用四个不同的页脚
- php - 在每个目录形式 foreach 中添加文件
- python - 使用 DolphinDB Python API 时如何保持时间索引
- javascript - 设置一个布尔值:一个有条件的函数与两个独立的函数
- javascript - React.js - 将道具从 hoc 传递给孩子
- servicestack - ServiceStack OrmLite-Oracle:无法插入具有序列属性的对象
- ios - 保存 RealmSwift 不支持的属性