IOS Number 处理(int-->NSNumber,NSNumber-->nsinteger,string -->double,CGFloat --> dobule)

1 小结:

1)int-->NSNumber:numberWithInt

2)NSNumber-->nsinteger:integerValue

3)string -->double:initWithString

4)CGFloat --> dobule:initWithFloat,decimalobj doubleValue

5)使用NSInteger,因为这样就不用考虑设备是32位的还是64位的。

6)NSInteger是基础类型,但是NSNumber是一个类。如果想要在NSMutableArray里存储一个数值,直接用NSInteger是不行的,比如在一个NSMutableArray里面.

7) NSString与NSInteger的相互转换

NSString * string = [NSString stringWithFormat:@"%d",integerNumber];

integer = [string intValue];

static void numberTest(){

NSNumber *numObj = [NSNumber numberWithInt: 2];

NSLog(@"numObj=%@",numObj);

NSInteger myInteger = [numObj integerValue];

NSLog(@"myInteger=%d",myInteger);

int a = [numObj intValue];

NSLog(@"a=%d",a);

//浮点数值使用CGFloat,NSDecimalNumber对象进行处理:

NSDecimalNumber *myDecimalObj = [[NSDecimalNumber alloc] initWithString:@"23.30"];

NSLog(@"myDecimalObj doubleValue=%6.3f",[myDecimalObj doubleValue]);

CGFloat myCGFloatValue = 43.4;

NSDecimalNumber *myOtherDecimalObj = [[NSDecimalNumber alloc] initWithFloat:myCGFloatValue];

NSLog(@"myOtherDecimalObj doubleValue=%6.5f",[myOtherDecimalObj doubleValue]);

}

2 、C语言的基本数据类型长度

  1. NSLog(@"The size of an int is: %lu bytes.",sizeof(int));
  2. NSLog(@"The size of a short int is: %lu bytes.",sizeof(short int));
  3. NSLog(@"The size of a long int is: %lu bytes.",sizeof(long int));
  4. NSLog(@"The size of a char is: %lu bytes.",sizeof(char));
  5. NSLog(@"The size of a float is: %lu bytes.",sizeof(float));
  6. NSLog(@"The size of a double is: %lu bytes.",sizeof(double));
  7. NSLog(@"The size of a bool is: %lu bytes.",sizeof(bool));   // Do any additional setup after loading the view,

结果:

  1. 2012-06-13 13:55:46.726 BaseType[3032:f803] The size of an int is: 4 bytes.
  2. 2012-06-13 13:55:46.726 BaseType[3032:f803] The size of a short int is: 2 bytes.
  3. 2012-06-13 13:55:46.727 BaseType[3032:f803] The size of a long int is: 4 bytes.
  4. 2012-06-13 13:55:46.731 BaseType[3032:f803] The size of a char is: 1 bytes.
  5. 2012-06-13 13:55:46.732 BaseType[3032:f803] The size of a float is: 4 bytes.
  6. 2012-06-13 13:55:46.733 BaseType[3032:f803] The size of a double is: 8 bytes.
  7. 2012-06-13 13:55:46.733 BaseType[3032:f803] The size of a bool is: 1 bytes.

3、格式化输出数据

  1. //整型
  2. int integerType = 5;
  3. //浮点型
  4. float floatType = 3.1415;
  5. //双浮点型
  6. double doubleType = 2.2033;
  7. //短整型
  8. short int shortType = 200;
  9. //长整型
  10. long long int longlongType = 7758123456767L;
  11. //c语言字符串
  12. char * cstring = "this is a string!";
  13. //整型
  14. NSLog(@"The value of integerType = %d",integerType);
  15. //浮点型
  16. NSLog(@"The value of floatType = %.2f",floatType);
  17. //双浮点型
  18. NSLog(@"The value of doubleType = %e",doubleType);
  19. //短整型
  20. NSLog(@"The value of shortType = %hi",shortType);
  21. //长整型
  22. NSLog(@"The value of longlongType = %lli",longlongType);
  23. //c语言字符串
  24. NSLog(@"The value of cstring = %s",cstring);

结果:

  1. 2012-06-13 14:06:18.757 BaseType[3215:f803] The value of integerType = 5
  2. 2012-06-13 14:06:18.757 BaseType[3215:f803] The value of floatType = 3.14
  3. 2012-06-13 14:06:18.758 BaseType[3215:f803] The value of doubleType = 2.203300e+00
  4. 2012-06-13 14:06:18.758 BaseType[3215:f803] The value of shortType = 200
  5. 2012-06-13 14:06:18.758 BaseType[3215:f803] The value of longlongType = 7758123456767
  6. 2012-06-13 14:06:18.758 BaseType[3215:f803] The value of cstring = this is a string!

4、 int,NSInteger,NSUInteger,NSNumber 
1.当需要使用int类型的变量的时候,可以像写C的程序一样,用int,也可以用NSInteger,但更推荐使用NSInteger,因为这样就不用考虑设备是32位的还是64位的。
2.NSUInteger是无符号的,即没有负数,NSInteger是有符号的。

 

3.有人说既然都有了NSInteger等这些基础类型了为什么还要有NSNumber?它们的功能当然是不同的。
 NSInteger是基础类型,但是NSNumber是一个类。如果想要在NSMutableArray里存储一个数值,直接用NSInteger是不行的,比如在一个NSMutableArray里面这样用:

  1. NSMutableArray *array = [[NSMutableArray alloc]init];
  2. [array addObject:[NSNumber numberWithInt:88]];

这样是会引发编译错误的,因为NSMutableArray里面放的需要是一个类,但‘88’不是类。

Cocoa提供了NSNumber类来包装(即以对象形式实现)基本数据类型。
例如以下创建方法:
+ (NSNumber *) numberWithChar: (char) value;
+ (NSNumber *) numberWithInt: (int) value;
+ (NSNumber *) numberWithFloat: (float) value;
+ (NSNumber *) numberWithBool: (BOOL) value;

将基本类型数据封装到NSNumber中后,就可以通过下面的实例方法重新获取它:
- (char) charValue;
- (int) intValue;
- (float) floatValue;
- (BOOL) boolValue;
- (NSString *) stringValue;

例子:

  1. NSNumber *num = [NSNumber numberWithInt:88];
  2. NSInteger integer = [num intValue];

5、NSString与NSInteger的相互转换

  1. NSInteger integerNumber = 888;
  2. NSString * string = [NSString stringWithFormat:@"%d",integerNumber];
  3. NSLog(@"string is %@", string);
  1. integer = [string intValue];
  2. NSLog(@"integer is%d", integerNumber);

char  float等类型一样可以转换

http://www.cnblogs.com/csj007523/archive/2012/07/16/2593269.html

时间: 2024-11-10 13:42:55

IOS Number 处理(int-->NSNumber,NSNumber-->nsinteger,string -->double,CGFloat --> dobule)的相关文章

iOS开发之int,NSInteger,NSUInteger,NSNumber的使用

1.首先先了解下NSNumber类型: 苹果官方文档地址:https://developer.apple.com/library/ios/documentation/Cocoa/Reference/Foundation/Classes/NSNumber_Class/Reference/Reference.html NSNumber是NSValue的一个子类,它是一个对象来存储数字值包括bool型,它提供了一系列的方法来存储char a signed or unsigned char, short

【iOS知识学习】_int、NSInteger、NSUInteger、NSNumber的区别和联系

1.首先先了解下NSNumber类型: 苹果官方文档地址:https://developer.apple.com/library/ios/documentation/Cocoa/Reference/Foundation/Classes/NSNumber_Class/Reference/Reference.html NSNumber是NSValue的一个子类,它是一个对象来存储数字值包括bool型,它提供了一系列的方法来存储char a signed or unsigned char, short

IOS数组、字典、NSNumber 新写法—— @[]、@{}

IOS数组.字典.NSNumber 新写法—— @[].@{} //标准写法 NSNumber * number = [NSNumber numberWithInt:1]; NSArray * array = [NSArray arrayWithObjects:@"one", @"two", nil]; NSDictionary * dict = [NSDictionary dictionaryWithObjectsAndKeys:@"value1&quo

NSNumber与NSInteger的区别

Objective-C 支持的类型有两种:基本类型 和  类. 基本类型,如同C 语言中的 int 类型一样,拿来就可以直接用. 而类在使用时,必须先创建一个对象,再为对象分配空间,接着做初始化和赋值. 类的初始化,需用类自身的方法 (类方法). 代码中所创建的对象,不用后,还得记着释放. 做了这么多铺垫, 具体到 NSNumber 和 NSInteger ,又怎样呢? NSNumber 是类, 而 NSInteger 只不过是个 基本类型. 既然 NSInteger是基本类型,那么,使用起来就

ios NSString字符串如何转为NSNumber(已解决)

今天同事问我 NSString字符串如何转为NSNumber,思考了一下解决了 思路:先将字符串转为NSInteger类型,再通过NSNumber的创建方法@(数字)即可实现 NSString * str = @"890909"; // 字符串转为NSInteger类型 NSInteger num = [str integerValue]; NSLog(@"%li",num); // 字符串转为NSNumber对象类型 NSNumber * nums = @(num

Convert integer to string(int类型转化为string类型)

译: 这是一个常见的问题,但是对于这个问题我没有找到一个很好的方法:如何将整数类型转化为字符串类型?我遇到过几种解决方案.我不会使用stringstream.sprintf()函数也遇到了问题,并且它是C语言的风格.函数itoa()以前工作地很好,但参考文档说: 这个函数在ANSI-C中没有被定义,并且它不是C++的一部分,但有些编译器支持 并且这个函数也是C语言风格. 我自己写了一个C++风格的函数,并且它工作起来没有错误(译者注:我不这么认为,详见后文). string convertInt

C++ 中int,char,string,CString类型转换

1. c++中string到int的转换 1) 在C标准库里面,使用atoi: #include <cstdlib> #include <string> std::string text = "152"; int number = std::atoi( text.c_str() ); if (errno == ERANGE) //可能是std::errno { //number可能由于过大或过小而不能完全存储 } else if (errno == ????)

C++ 中 int,char*,string,CString之间相互转换-整理

#include <string> //使用C++标准库的string类时 using namespace std; //同上 #include <sstream> #include <iostream> #include <stdlib.h> //要将string类和int类型直接转换最好有这些包含, //因为自己写一个转换函数比较方便,函数定义参考如下 string getstring ( const int n ) { std::stringstrea

C# int与char或string拼接

using UnityEngine; public class Test: MonoBehaviour{ private void Start (){ Debug.Log(',');//output:, Debug.Log(1+',');//output:45 int intValue1=1+','; Debug.Log(intValue1);//output:45 //int intValue2=1+",";//无法将类型"string"隐式转换为"in