我正在尝试计算反对数。但这并没有给我想要的结果。请帮我..
double number=74.5;
double logOfNumber=log10(number);
double antilog = pow(10, logOfNumber) ;
NSLog(@"%lf",antilog);
我正在尝试计算反对数。但这并没有给我想要的结果。请帮我..
double number=74.5;
double logOfNumber=log10(number);
double antilog = pow(10, logOfNumber) ;
NSLog(@"%lf",antilog);
您需要使用pow
C 语言中的 math.h 方法。
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
您正在寻找以下exp
功能:
ans = exp(exponent)
由于该log
函数返回数字的自然对数,因此您需要使用exp
,而不是pow
获得倒数,因为该pow
函数接受基数作为参数,并且您不需要它,因为您正在使用数字的自然对数,即在数字 = e^x的地方找到x。
当然,您总是可以使用该log10
函数来获取数字的以 10 为底的对数,然后您需要使用它pow(10, logarithm)
来获取原始值。
一个数字的对数可以取任何底数。该log
函数以e为底,也就是说,它采用自然对数,或者,它在您的数字 = e^x处找到x。该函数以 10 为底,也就是说,它在您的数字 = 10^x处找到x。如果你取以 10 为底或其他底数的对数,你会用它来取回原始数字,其中取对数的底数是对数。但是,如果您使用该函数并取以e为底的对数,则 using返回e^logarithm的值log10
pow(base, exponent)
base
exponent
log
exp(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 为基数运行并由于位于同一基数中而返回正确的结果。
尝试这个
float logOfx(float value, float base)
{
return log10f(value) / log10f(base);
}