iOS NSNumber 和 float / double 相互转换

ChatGPT 3.5 国内中文镜像站免费使用啦

零基础 Object-C 学习路线推荐 : Object-C 学习目录 >> Object-C 基础

零基础 Object-C 学习路线推荐 : Object-C 学习目录 >> Object-C 线程

零基础 Object-C 学习路线推荐 : Object-C 学习目录 >> OpenGL ES

零基础 Object-C 学习路线推荐 : Object-C 学习目录 >> GPUImage

零基础 Object-C 学习路线推荐 : Object-C 学习目录 >> AVFoundation

零基础 Object-C 学习路线推荐 : Object-C 学习目录 >> CocoaPods


一.float / double 转 NSNumber

       浮点数类型也分为两类,一种是 float 单精度 ,一种是 double 双精度,区别就在于 double 的取值范围不管是小数部分还是整数部分都比 float 更高;


1.float(单精度)

  • float 整数部分取值范围:能表达式万亿级别,已经够大了,实际开发完全够用;
  • float 小数部分取值范围:最多只能精确到小数点后6位;

2.double(双精度)

  • double 整数部分取值范围:比float更大,脑补就行了….
  • double 小数部分取值范围:最多只能精确到小数点后15位;

NSNumber 转 float / double 过程中,应该注意精度问题,例如下面代码:

/******************************************************************************************/
//@Author:猿说编程
//@Blog(个人博客地址): www.codersrc.com
//@File:iOS NSNumber 和 float / double 相互转换
//@Time:2021/09/21 08:00
//@Motto:不积跬步无以至千里,不积小流无以成江海,程序人生的精彩需要坚持不懈地积累!
/******************************************************************************************/

NSLog(@"float 转 NSNumber-----------");
float fValue = 3.1415926573;
NSNumber *number1 = [NSNumber numberWithFloat:fValue];
NSNumber *number2 = [NSNumber numberWithDouble:fValue];
NSLog(@"number1 = %@",number1);
NSLog(@"number2 = %@",number2);
    
NSLog(@"double 转 NSNumber-----------");  
double dValue = 3.1415926573;
NSNumber *number3 = [NSNumber numberWithFloat:dValue];
NSNumber *number4 = [NSNumber numberWithDouble:dValue];
NSLog(@"number3 = %@",number3);
NSLog(@"number4 = %@",number4);

/*
float 转 NSNumber-----------
number1 = 3.141593
number2 = 3.141592741012573
double 转 NSNumber-----------
number3 = 3.141593
number4 = 3.1415926573
*/


二.NSNumber 转 float / double

/******************************************************************************************/
//@Author:猿说编程
//@Blog(个人博客地址): www.codersrc.com
//@File:iOS NSNumber 和 float / double 相互转换
//@Time:2021/09/21 08:00
//@Motto:不积跬步无以至千里,不积小流无以成江海,程序人生的精彩需要坚持不懈地积累!
/******************************************************************************************/

NSNumber *number1 = [NSNumber numberWithFloat:3.1415926573];
NSNumber *number2 = [NSNumber numberWithDouble:3.1415926573];

float fValue1 = [number1 floatValue];
double dValue1 = [number1 doubleValue];

float fValue2 = [number2 floatValue];
double dValue2 = [number2 doubleValue];

NSLog(@"fValue1 = %f dValue1 = %f",fValue1,dValue1);
NSLog(@"fValue2 = %f dValue2 = %f",fValue2,dValue2);

/*
fValue1 = 3.141593 dValue1 = 3.141593
fValue2 = 3.141593 dValue2 = 3.141593
*/

三.猜你喜欢


ChatGPT 3.5 国内中文镜像站免费使用啦
© 版权声明
THE END
喜欢就支持一下吧
点赞0 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容