数学函数“Log()”

时间:2011-02-15 18:50:11

标签: iphone objective-c ios4

有没有办法将数学函数Log()实现到带有iphone应用程序的方程式中?我现在正在努力,没有日志功能需要大约400 + if和else if语句。我已经写出了这些if和else if语句。其中一半工作,另一半继续返回0.00。在试图找到问题的HOURS并将其与有效的部分进行比较后,我仍然无法弄明白。我知道我可以做简单的数学(加,减,除,多等),但我发现任何搜索论坛,谷歌等告诉我如何添加日志功能。如果我能做到这一点,我可以将我的代码从500行减少到大约40个顶部。任何人都可以帮助我,或至少指出我在哪里可以找到一个线程或教程吗?

3 个答案:

答案 0 :(得分:4)

#import <math.h>

// ...

double someLog = log(someDouble);

(注意:我在这里使用了double / log,但如果速度是一个问题,你可能会考虑使用float / logf,因为它们可以在iPhone(IIRC)上更快。)

答案 1 :(得分:4)

我已经修复了Shaun在他的回答中发布的示例代码,但为了清楚起见,有两个问题在起作用:

  • 首先,他没有包括<math.h>并使用系统数学库中的log
  • 其次,他省略了表达式.19077f(logf(abNeckFactor))中的乘法运算符;我们经常以这种方式编写数学,但它在语法上不是有效的C(或Obj-C)代码。

Shaun,我建议你多花点时间阅读C和Objective-C中可用的内容;语言中存在大量的功能,花了几个小时来学习已经为你完成的工作将会花费你很多很长时间来搜索未来的东西。

另请注意,log函数是base-e对数。数学和计算之外的许多技术领域的人使用log来代替基数为10的对数;如果这就是您所需要的,则需要拨打log10( ) - 或log10f( ) - 而不是。

答案 2 :(得分:0)

我知道你已经得到了你的问题的答案,但是这里不用写大量的if,否则if if else if .... else,以供将来参考。

将答案存储在数组中。 例如,您可以定义一个如下所示的数组数组: [(min,max,value),(min,max,value),...]。然后遍历数组。

arr = {{min, max, value}, {min, max, value}, ...}
for i in range(0, arr.length) 
  if(arr[i][min_i] < x && x < arr[i][max_i]) {return arr[val_i]}

可能有一种方法可以计算如何将 x 映射到像 x /(max-min)这样的数组的索引,以便 log(x )将是 arr [x /(max-min)] 。但我的观点是,拥有一个数组或字典并搜索它比拥有一堆if,else if,else if,...语句更简洁。