-3

我正在尝试计算反对数。但这并没有给我想要的结果。请帮我..

   double number=74.5;
   double logOfNumber=log10(number);
   double antilog = pow(10, logOfNumber) ;
   NSLog(@"%lf",antilog);
4

3 回答 3

3

您需要使用powC 语言中的 math.h 方法。

antilog = pow(10, number) ;

这会给你对数 numberbase10

旁注:当您创建科学计算器时,您将需要Base作为数字。

编辑:

double number=74.5;
double logOfNumber=log10(number);
double antilog = pow(10, logOfNumber) ;
NSLog(@"%lf",antilog);

输出:74.500000

在此处输入图像描述

于 2013-05-31T12:58:05.453 回答
1

您正在寻找以下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的值log10pow(base, exponent)baseexponentlogexp(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 为基数运行并由于位于同一基数中而返回正确的结果。

于 2013-05-31T12:57:54.997 回答
0

尝试这个

   float logOfx(float value, float base) 
   {
        return log10f(value) / log10f(base);
   }
于 2013-05-31T13:04:53.803 回答