0 ios 除以等于

2015-11-12 16:54:21 qq_29284809 阅读数 594

通常我们从后台获取到的时间一般都为时间戳,有得为13位的,而有得则为10位,这两者在处理上有点不同。

1.时间戳为13位的处理方法(13位的需要除以1000)

NSDateFormatter * formatter = [[NSDateFormatter alloc]init];

[formatter setDateFormat:@"yyyy-MM-dd HH:mm:ss"];//时间的显示格式

NSTimeInterval timeInterval = [@"1336354851619" doubleValue];

NSDate * date = [NSDate dateWithTimeIntervalSince1970:timeInterval / 1000]; //通过一个从1970年流逝的秒数创建一个日期对象

NSString * dateString = [formatter stringFromDate:date];//把日期转成字符串

NSLog(@"%@",dateString);

输出结果为:2012-05-07 09:40:51

2.时间戳为10位的处理方法

 NSDateFormatter * formatter = [[NSDateFormatter alloc]init];

 [formatter setDateFormat:@"yyyy-MM-dd HH:mm:ss"];

 NSTimeInterval timeInterval = [@"1336354851" doubleValue];

 NSDate * date = [NSDate dateWithTimeIntervalSince1970:timeInterval];

 NSString * dateString = [formatter stringFromDate:date];

 NSLog(@"%@",dateString);

输出结果为:2012-05-07 09:40:51


//比较两个时间的差值

- (void)testDate:(NSString *)create_time
{
    //日期格式化类
    NSDateFormatter * fmt = [[NSDateFormatter alloc]init];
    fmt.dateFormat = @"yyyy-MM-dd HH:mm:ss";
    //当前时间
    NSDate * now = [NSDate date];
    //发帖时间
    NSDate * create = [fmt dateFromString:create_time];
    //第一种方法
//    NSTimeInterval delta = [now timeIntervalSinceDate:create];
//    ZCLog(@"%f",delta);
    
    //第二种
    //日历
    NSCalendar * calendar = [NSCalendar currentCalendar];
    
    //比较时间
    NSCalendarUnit unit = NSCalendarUnitYear | NSCalendarUnitMonth | NSCalendarUnitDay | NSCalendarUnitHour | NSCalendarUnitMinute | NSCalendarUnitSecond;
    NSDateComponents * cmps = [calendar components:unit fromDate:create toDate:now options:0];
    
    //获取NSDate的每一元素
//    NSInteger year = [calendar component:NSCalendarUnitYear fromDate:now];
//    NSInteger month = [calendar component:NSCalendarUnitMonth fromDate:now];
//    NSInteger day = [calendar component:NSCalendarUnitDay fromDate:now];
//    NSDateComponents * cmps = [calendar components:NSCalendarUnitYear | NSCalendarUnitMonth | NSCalendarUnitDay fromDate:now];
//    ZCLog(@"%zd %zd %zd",cmps.year, cmps.month, cmps.day);

}



2015-05-08 10:09:18 skylin19840101 阅读数 1556


众所周知,在编程中除以0,是会导致程序crash的,比如c、c++、c#等,但是在ios中,我得到了不一样的结果,请看下面的截图:


程序居然没crash,还得到了为0的值。具体原因正在慢慢查询

2019-04-03 16:31:14 xiaohuoziooo 阅读数 745

问题:

在iOS开发中,我们会经常碰到使用浮点型接收后台返回的数据,这个时候往往就会遇到精度转换问题,尤其是在开发金融类APP的时候:

解决:

使用 NSDecimalNumber 将float/double数据转化成NSDecimalNumber 类型的对象进行 +、-、*、/ 运算。

 -(double)decimalNumber:(double)num1 num2:(double)num2  {
  
    NSDecimalNumber *deciNum1 = [NSDecimalNumber decimalNumberWithString:[NSString stringWithFormat:@"%f",num1]];
    
    NSDecimalNumber *deciNum2 = [NSDecimalNumber decimalNumberWithString:[NSString stringWithFormat:@"%f",num2]];
    
    NSDecimalNumber *deciNum3 = [deciNum1 decimalNumberBySubtracting:deciNum2];
    
    return deciNum3.doubleValue;
}
// 调用:
double result = [self  decimalNumber: 2.01 num2: 2]; // 结果为 0.01

有关NSDecimalNumber的运算

 - decimalNumberBySubtracting: n1 - n2,返回 n1 - n2 的结果值
 - decimalNumberByMultiplyingBy:n1 * n2,
 - decimalNumberByDividingBy:n1 / n2,
 - decimalNumberByAdding:n1 + n2,
 - compare:比较 n1 和 n2,返回比较结果;
2016-12-07 16:26:14 qq_33298465 阅读数 2748

2.高斯函数,向下取整

floor(1.0/4)=0;
floor(4.0/4)=1;
floor(5.0/4)=1;
floor(8.0/4)=2;

floor()方法是向下取整,类似于数学中的高斯函数 [].取得不大于浮点数的最大整数,对于正数来说是舍弃浮点数部分,对于复数来说,舍弃浮点数部分后再减1.

3.ceil函数,向上取整。

如:
ceil(1.0/4)=1;
ceil(4.0/4)=1;
ceil(5.0/4)=2;
ceil(8.0/4)=2;

ceil()方法是向上取整,括号内是double类型

这两个函数都是math.h库里面的,直接使用就行,ios不需要再次倒入头文件,类似这个数学函数还有很多,如

1、 三角函数 
double sin (double); 正弦 
double cos (double);余弦   
double tan (double);正切 

2 、反三角函数    
double asin (double); 结果介于[-PI/2, PI/2]   
double acos (double); 结果介于[0, PI]   
double atan (double); 反正切(主值), 结果介于[-PI/2, PI/2]   
double atan2 (double, double); 反正切(整圆值), 结果介于[-PI, PI] 

3 、双曲三角函数 
double sinh (double);   
double cosh (double);   
double tanh (double); 

4 、指数与对数    
double exp (double);求取自然数e的幂   
double sqrt (double);开平方   
double log (double); 以e为底的对数   
double log10 (double);以10为底的对数   
double pow(double x, double y);计算以x为底数的y次幂   
float powf(float x, float y); 功能与pow一致,只是输入与输出皆为浮点数 

5 、取整    
double ceil (double); 取上整   
double floor (double); 取下整 

6 、绝对值    
double fabs (double);求绝对值   
double cabs(struct complex znum) ;求复数的绝对值 

7 、标准化浮点数 
double frexp (double f, int *p); 标准化浮点数, f = x * 2^p, 已知f求x, p ( x介于[0.5, 1] )   
double ldexp (double x, int p); 与frexp相反, 已知x, p求f 

8 、取整与取余    
double modf (double, double*); 将参数的整数部分通过指针回传, 返回小数部分   
double fmod (double, double); 返回两参数相除的余数 

9 、其他 
double hypot(double x, double y);已知直角三角形两个直角边长度,求斜边长度   
double ldexp(double x, int exponent);计算x*(2的exponent次幂)   
double poly(double x, int degree, double coeffs [] );计算多项式   
nt matherr(struct exception *e);数学错误计算处理程序


2015-07-28 21:44:02 zc639143029 阅读数 1146

这里写图片描述

一、什么是进制
是一种计数的方式,数值的表示形式。在iOS开发中能用到很少,在面试中会用到。

二、二进制
1> 特点:只有0和1,逢2进1
2> 书写格式:0b或者0b开头
3> 使用场合:二进制指令\二进制文件,变量在内存中就是二进制存储
4> 二进制和十进制的互相转换
5> n为二进制位所能表示的数据范围(不考虑负数):0~2的n次方

三、进制
1> 特点:0~7,逢八进一
2> 书写格式:0开头
3> 八进制和二进制的互相转换

四、十六进制
1> 特点:0~F,逢十六进一
2> 书写格式:0x或者0X开头
3> 十六进制和二进制的互相转换

五、 原码反码补码概念及转换
数据在计算机内部是以补码的形式储存的
数据分为有符号数和无符号数。

(1)原码
原码就是符号位加上真值的绝对值, 即用第一位表示符号, 其余位表示值。
(2)反码
正数的反码是其本身
负数的反码是在其原码的基础上, 符号位不变,其余各个位取反。
(3)补码
正数的补码就是其本身
负数的补码是在其原码的基础上, 符号位不变, 其余各位取反, 最后+1. (即在反码的基础上+1)。

在64位计算机中,-1的原码、反码、补码如下
-1原码 【 1000 0000 0000 0000 0000 0000 0000 0001】
-1反码 【1111 1111 1111 1111 1111 1111 1111 1110 】
-1补码 【1111 1111 1111 1111 1111 1111 1111 1111 】

六、位运算符
位运算是指按二进制进行的运算。在系统软件中,常常需要处理二进制位的问题。 C语言提供了6个位操作运算符。这些运算符只能用于整型操作数,即只能用于带符号或无符号的 char,short,int与long类型。

(1)位运算符与
& 按位与
只有对应的两个二进位均为1时,结果位才为1,否则为0
口诀: 同1为1;

规律
二进制中,与1相&就保持原位,与0相&就为0
应用场景:
按位与运算通常用来对某些位清0或保留某些位。例如把a的高位都清0,保留低八位,那么就a&255
判断奇偶: 将变量a与1做位与运算,若结果是1,则 a是奇数;若结果是0,则 a是偶数
任何数和1进行&操作,得到这个数的最低位

(2)位运算符异或
^ 按位异或
当对应的二进位相异(不相同)时,结果为1,否则为0
规律
相同整数相^的结果是0。比如5^5=0;

(3)位运算符取反
~ 取反
各二进位进行取反(0变1,1变0)
多个整数相^的结果跟顺序无关。比如5^6^7=5^7^6
因此得出结论:a^b^a = b

(4)左移位运算符
把整数a的各二进位全部左移n位,高位丢弃,低位补0。
左移n位其实就是:乘以2的n次方。

由于左移是丢弃最高位,0补最低位,所以符号位也会被丢弃,左移出来的结果值可能会改变正负性。
应用场景:
快速计算一个数乘以2的n次方

(5)右移位运算符
把整数a的各二进位全部右移n位,保持符号位不变。右移n位其实就是除以2的n次方

·为正数时, 符号位为0,最高位补0
·为负数时,符号位为1,最高位是补0或是补1
·取决于编译系统的规定

应用场景:
快速计算一个数除以2的n次方

这里写图片描述

IOS开发之尺寸

阅读数 40