iOS开发-math.h/ceil/floor/round

简介: https://blog.csdn.net/acmicpc123/article/details/50280097

math.h头文件库函数的介绍:


1、每一个函数都能接受定义域内的所有参数值,对于其他所有的参数都报告定义域错误。发生定义域错误时,errno设置为EDOM。

2、如果输入的不是数字,那么函数返回一个表示非数字的特殊编码NaN(即Not a number)。

3、对于一个输入的具体的值,函数产生一个确定的结果。

4、对于所有的结果的值太小或者太大而不能表示的值,函数报告值域错误。

5、如果函数产生的结果数值太大,那么函数就返回一个表示正无穷大的特殊编码+Inf,或者负无穷大的编码-Inf;

6、如果结果太小而不能表示,就返回0。一般来说,结果不能表示为double类型值时,发生值域错误。

7、如果结果上溢,函数返回宏HUGE_VAL的值,并且errno设置为宏ERANGE,如果结果下溢,函数返回0。

8、对于任何可以表示的结果,函数都尽可能地把精度误差控制在两位以内。

9、所有math.h头文件里生命的函数的返回类型和参数值都是double类型,并且中间结果也是用double类型来表示。


#include <math.h>
-(void)mathTest{
    //----------------------------
    //ceil(double x):计算不小于x的最小整数
    NSLog(@"ceil(4.2): %f",ceil(4.2));
    //floor(double x):计算不大于x的最大整数
    NSLog(@"floor(4.2): %f",floor(4.2));
    //floor(double x):计算不大于x的最大整数
    NSLog(@"round(4.2): %f,round(4.55): %f",round(4.2),round(4.55));
    //-----------------------------
    CGFloat d = 180;
    //cos计算x(单位为弧度)的余弦值。函数cos返回余弦值
    NSLog(@"cos(180): %f",cos(d));
    //sin计算x(以弧度为单位)的正弦值。函数sin返回正弦值。
    NSLog(@"sin(180): %f",sin(d));
    //tan返回x(以弧度为单位)的正切值。函数返回正切值。
    NSLog(@"tan(180): %f",tan(d));
    //-----------------------------
    CGFloat c = 0.5;
    //acos:计算x的反余弦,取值x[-1, +1],函数返回[0, π]弧度
    NSLog(@"反余弦acos(0.5): %f",acos(c));
    //asin:计算x的反正弦,取值x[-1, +1],函数返回[-π/2, +π/2]弧度
    NSLog(@"反正弦asin(0.5): %f",asin(c));
    //atan:计算x的反正切,函数atan返回[-π/2, +π/2]弧度
    NSLog(@"x的反正切atan(0.5): %f",atan(c));
    //atan2:计算y/x的反正切,函数在[-π, +π]弧度范围内,确定返回值的象限信息
    NSLog(@"y/x的反正切atan2(3,-4): %f",atan2(3,-4));
    //-----------------------------
    //sinh计算x的双曲正弦,定义域(-Inf, +Inf),值域(-Inf, +Inf)。
    NSLog(@"双曲正弦sinh(0.5): %f",sinh(c));
    //cosh计算x的双曲余弦,定义域(-Inf, +Inf),值域(-Inf, +Inf)。
    NSLog(@"双曲余弦cosh(0.5): %f",cosh(c));
    //tanh计算x的双曲正切,定义域(-Inf, +Inf),值域(-1, +1)。
    NSLog(@"双曲正切tanh(0.5): %f",tanh(c));
    //log:计算x的自然对数 取值 >0;
    NSLog(@"log(4): %f",log(4));
    //log10:计算x的以10为底的对数
    NSLog(@"log10(100): %f",log10(100));
    //pow(double x, double y):x的y次幂
    NSLog(@"pow(2, 4): %f",pow(2, 4));
    //sqrt(double x):计算x的非负平方根
    NSLog(@"sqrt(4): %f",sqrt(4));
    //fmod(double x, double y):计算x/y的浮点余数
    NSLog(@"fmod(8, 3): %f",fmod(8, 3));
    //---------------------------------
    //double ldexp(double x, int exp); 函数ldexp计算一个浮点数和2的整数幂的乘积,有可能发生值域错误。函数ldexp返回x乘以2的exp次幂的值。注意,ldexp和frexp是互逆的操作。s = f*2n
    NSLog(@"ldexp(0.3, 3): %f",ldexp(0.3, 3));
}


/* 弧度转角度 */
#define SK_RADIANS_TO_DEGREES(radian) \
        ((radian) * (180.0 / M_PI))
/* 角度转弧度 */
#define SK_DEGREES_TO_RADIANS(angle) \
        ((angle) / 180.0 * M_PI)


打印日志:

20190529232431258.png

补充:

HUGE_VAL——这个宏通常会展开为一个非常大的double常量,一般情况下和float.h中定义的DBL_MAX的展开值相等。

在那些对无穷大(Inf)不提供特殊编码的机器上,通常认为返回这样一个大值是警告发生了值域错误的最好方式。

将一个数学函数的返回值和HUGE_VAL或者-HUGE_VAL相比较可能会比较安全。


参考:

1、math.h


相关文章
|
1月前
|
API 数据安全/隐私保护 iOS开发
利用uni-app 开发的iOS app 发布到App Store全流程
利用uni-app 开发的iOS app 发布到App Store全流程
89 3
|
3月前
|
存储 iOS开发
iOS 开发,如何进行应用的本地化(Localization)?
iOS 开发,如何进行应用的本地化(Localization)?
122 2
|
3月前
|
存储 数据建模 数据库
IOS开发数据存储:什么是 UserDefaults?有哪些替代方案?
IOS开发数据存储:什么是 UserDefaults?有哪些替代方案?
39 0
|
3月前
|
安全 编译器 Swift
IOS开发基础知识: 对比 Swift 和 Objective-C 的优缺点。
IOS开发基础知识: 对比 Swift 和 Objective-C 的优缺点。
93 2
|
3月前
|
API 开发工具 iOS开发
iOS 开发高效率工具包:10 大必备工具
iOS 开发高效率工具包:10 大必备工具
48 1
|
3月前
|
API 数据安全/隐私保护 iOS开发
利用uni-app 开发的iOS app 发布到App Store全流程
利用uni-app 开发的iOS app 发布到App Store全流程
54 1
|
9天前
|
API 定位技术 iOS开发
IOS开发基础知识:什么是 Cocoa Touch?它在 iOS 开发中的作用是什么?
【4月更文挑战第18天】**Cocoa Touch** 是iOS和Mac OS X应用的核心框架,包含面向对象库、运行时系统和触摸优化工具。它提供Mac验证的开发模式,强调触控接口和性能,涵盖3D图形、音频、网络及设备访问API,如相机和GPS。是构建高效iOS应用的基础,对开发者至关重要。
12 0
|
24天前
|
开发工具 Swift iOS开发
利用SwiftUI构建动态用户界面:iOS开发新范式
【4月更文挑战第3天】 随着苹果不断推进其软件开发工具的边界,SwiftUI作为一种新兴的编程框架,已经逐渐成为iOS开发者的新宠。不同于传统的UIKit,SwiftUI通过声明式语法和强大的功能组合,为创建动态且响应式的用户界面提供了一种更加简洁高效的方式。本文将深入探讨如何利用SwiftUI技术构建具有高度自定义能力和响应性的用户界面,并展示其在现代iOS应用开发中的优势和潜力。
|
2月前
|
监控 API Swift
用Swift开发iOS平台上的上网行为管理监控软件
在当今数字化时代,随着智能手机的普及,人们对于网络的依赖日益增加。然而,对于一些特定场景,如家庭、学校或者企业,对于iOS设备上的网络行为进行管理和监控显得尤为重要。为了满足这一需求,我们可以利用Swift语言开发一款iOS平台上的上网行为管理监控软件。
202 2
|
3月前
|
数据可视化 iOS开发
iOS 开发,什么是 Interface Builder(IB)?如何使用 IB 构建用户界面?
iOS 开发,什么是 Interface Builder(IB)?如何使用 IB 构建用户界面?
40 4