我正在尝试计算antilog。但它没有给我想要的结果。 请帮帮我..
double number=74.5;
double logOfNumber=log10(number);
double antilog = pow(10, logOfNumber) ;
NSLog(@"%lf",antilog);
答案 0 :(得分:2)
您需要使用C语言的math.h pow
方法。
antilog = pow(10, number) ;
这将为number
base10
的反对数
旁注: 当您创建科学计算器时,您需要 Base 作为数字。
编辑:
double number=74.5;
double logOfNumber=log10(number);
double antilog = pow(10, logOfNumber) ;
NSLog(@"%lf",antilog);
输出:74.500000
答案 1 :(得分:1)
您正在寻找exp
功能:
ans = exp(exponent)
自log
function returns the natural logarithm of the number以来,您需要使用exp
而不是pow
来获得反转,因为pow
函数接受基数作为参数,并且您不需要不需要这个,因为你采用数字的自然对数,即在数字= e ^ x 的地方找到 x 。
当然,您总是可以使用log10
function来获取数字的基数10对数,然后您需要使用pow(10, logarithm)
来获取原始值。
数字的对数可以在任何基数中获取。 log
函数在 e 基础上执行,也就是说,它采用自然对数,或者找到 x number = e ^ x 。 log10
函数在基数10中执行,也就是说,它找到 x ,其中数字= 10 ^ x 。如果你取数字的基数10或其他基数,你可以使用pow(base, exponent)
来获取原始数字,其中base
是取对数的基数,exponent
是对数。但是,如果您使用log
函数并在base e 中取对数,则使用exp(logarithm)
返回 e ^ logarithm 的值,并且可以由于精度的变化,可能比使用pow(2.7182818285, logarithm)
更准确。
您只需确保使用正确的功能对,以确保获得正确的反向,即:
printf("%f\n", exp(logf(17)));
打印17,而
printf("%f\n", pow(10, logf(17)));
打印681.103864,这显然不是你想要的。
您也可以使用
printf("%f\n", pow(10, log10(17)));
因为这些将在基数10中运行并且由于处于相同的基数而返回正确的结果。
答案 2 :(得分:0)
试试这个
float logOfx(float value, float base)
{
return log10f(value) / log10f(base);
}