作者热门文章
- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我有下一个功能:
static bool isPowerOf(int num, int power)
{
double b = 1.0 / power;
double a = Math.Pow(num, b);
Console.WriteLine(a);
return a == (int)a;
}
我插入了打印函数进行分析。
如果我调用函数:
isPowerOf(25, 2)
它返回 true 因为 5^2
等于 25。但是,如果我调用 16807,即 7^5
,下一个方法:
isPowerOf(16807, 5)
在这种情况下,它打印“7”但 a == (int)a
返回 false。
你能帮忙吗?谢谢!
最佳答案
尝试对舍入误差使用小的 epsilon:
return Math.Abs(a - (int)a) < 0.0001;
正如 harold 所建议的,如果 a
碰巧略小于整数值,如 3.99999,最好进行舍入:
return Math.Abs(a - Math.Round(a)) < 0.0001;
关于C# isPowerOf 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11359694/
我有下一个功能: static bool isPowerOf(int num, int power) { double b = 1.0 / power; double
我是一名优秀的程序员,十分优秀!