如何找出antilog

时间:2013-05-31 12:53:32

标签: iphone ios objective-c

我正在尝试计算antilog。但它没有给我想要的结果。 请帮帮我..

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

3 个答案:

答案 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

enter image description here

答案 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);
   }