在实际工作中有些程序不可避免的需要使用数学函数进行计算,比如地图程序的地理坐标到地图坐标的变换。Objective-C做为ANSI C的扩展,使用C标准库头文件<math.h>中定义的数学常量宏及数学函数来实现基本的数学计算操作,所以不必费神再在Cocoa Foundation中寻找相应的函数和类了。这里列出一些常用宏和数学函数,更详细的信息还是需要去查阅<math.h>头文件。

数学常量:
#define M_E         2.71828182845904523536028747135266250   // e
#define M_LOG2E     1.44269504088896340735992468100189214   // log 2e
#define M_LOG10E    0.434294481903251827651128918916605082  // log 10e
#define M_LN2       0.693147180559945309417232121458176568  // log e2
#define M_LN10      2.30258509299404568401799145468436421   // log e10
#define M_PI        3.14159265358979323846264338327950288   // pi
#define M_PI_2      1.57079632679489661923132169163975144   // pi/2
#define M_PI_4      0.785398163397448309615660845819875721  // pi/4
#define M_1_PI      0.318309886183790671537767526745028724  // 1/pi
#define M_2_PI      0.636619772367581343075535053490057448  // 2/pi
#define M_2_SQRTPI  1.12837916709551257389615890312154517   // 2/sqrt(pi)
#define M_SQRT2     1.41421356237309504880168872420969808   // sqrt(2)
#define M_SQRT1_2   0.707106781186547524400844362104849039  // 1/sqrt(2)

常用函数:
//指数运算
NSLog(@"%.f", pow(3,2) ); //result 9
NSLog(@"%.f", pow(3,3) ); //result 27

//开平方运算
NSLog(@"%.f", sqrt(16) ); //result 4
NSLog(@"%.f", sqrt(81) ); //result 9

//上舍入
NSLog(@"res: %.f", ceil(3.000000000001)); //result 4
NSLog(@"res: %.f", ceil(3.00)); //result 3

//下舍入
NSLog(@"res: %.f", floor(3.000000000001)); //result 3
NSLog(@"res: %.f", floor(3.9999999)); //result 3

//四舍五入
NSLog(@"res: %.f", round(3.5)); //result 4
NSLog(@"res: %.f", round(3.46)); //result 3
NSLog(@"res: %.f", round(-3.5)); //NB: this one returns -4

//最小值
NSLog(@"res: %.f", fmin(5,10)); //result 5

//最大值
NSLog(@"res: %.f", fmax(5,10)); //result 10

//绝对值
NSLog(@"res: %.f", fabs(10)); //result 10
NSLog(@"res: %.f", fabs(-10)); //result 10

这里没有列出的三角函数也是属于C标准数学函数的一部分,也可以在<math.h>中查阅。

最新文章

  1. 机器学习实战笔记(Python实现)-06-AdaBoost
  2. JSP+Servlet+javabean+mysql实现页面多条件模糊查询
  3. iptables之链之间的跳转
  4. powerdesigner 绘制表关系和导出sql
  5. postgresql 索引
  6. WinCE启动次数的记录
  7. 利用Modbus协议读取电能表的数据
  8. 连接远程LINUX服务器
  9. 别再说&ldquo;我已经努力了&rdquo;,你的&ldquo;努力&rdquo;一文不值!
  10. 《Java并发编程实战》第六章 任务运行 读书笔记
  11. ROS Node/Topic/Message/Service的一些问题
  12. Android 手势检测实战 打造支持缩放平移的图片预览效果(下)
  13. jmetter的http请求设置
  14. java频繁new对象的优化方案
  15. Jeecg-Boot Spring Boot
  16. 在windows 上自动重启 tomcat 的方法
  17. 第三方apk内置因签名导致SystemUI未启动启动问题案例分析
  18. VM浏览器不能访问
  19. 【iCore1S 双核心板_FPGA】例程六:状态机实验——状态机使用
  20. 6、二、App Components(应用程序组件):1、Intents and Intent Filters(意图和意图过滤器)

热门文章

  1. C++入门经典-例3.2-根据分数判断是否优秀
  2. 在MVC项目中使用Ninject
  3. 7. 进行图片的数据补全和增强(随机亮度,随机饱和度,随机翻转) Image.open(进行图片的读入) 2.ImageEnhance.Brightness(亮度变化) 3.ImageEnhance.Contrast(饱和度变化) 4.enhance_image.transpose(图片随机翻转) 5.enhance_image.save(进行图片保存)
  4. 统计学_Wilcoxon signed-rank test(python脚本)
  5. 有关二次离线和 Yuno loves sqrt technology II
  6. java游戏服务器--简单工厂模式
  7. Spring Boot 自定义注册 Servlet、Filter、Listener
  8. 基于Opencv的自适应中值滤波函数selfAdaptiveMedianBlur()
  9. C++随笔(1)——关于C++11中的线程创建,join和detach
  10. cf1151e number of components