Swift 提供了非常丰富的数据类型,以下列出了常用了几种数据类型:

Int

一般来说,你不需要专门指定整数的长度。Swift 提供了一个特殊的整数类型Int,长度与当前平台的原生字长相同:

  • 在32位平台上,Int和Int32长度相同。
  • 在64位平台上,Int和Int64长度相同。

除非你需要特定长度的整数,一般来说使用Int就够了。这可以提高代码一致性和可复用性。即使是在32位平台上,Int可以存储的整数范围也可以达到-2,147,483,648~2,147,483,647,大多数时候这已经足够大了。


UInt

Swift 也提供了一个特殊的无符号类型UInt,长度与当前平台的原生字长相同:

  • 在32位平台上,UInt和UInt32长度相同。
  • 在64位平台上,UInt和UInt64长度相同。

注意:

尽量不要使用UInt,除非你真的需要存储一个和当前平台原生字长相同的无符号整数。除了这种情况,最好使用Int,即使你要存储的值已知是非负的。统一使用Int可以提高代码的可复用性,避免不同类型数字之间的转换,并且匹配数字的类型推断,请参考类型安全和类型推断。

浮点数

浮点数是有小数部分的数字,比如3.14159,0.1和-273.15。

浮点类型比整数类型表示的范围更大,可以存储比Int类型更大或者更小的数字。Swift 提供了两种有符号浮点数类型:

  • Double表示64位浮点数。当你需要存储很大或者很高精度的浮点数时请使用此类型。
  • Float表示32位浮点数。精度要求不高的话可以使用此类型。

注意:

Double精确度很高,至少有15位数字,而Float最少只有6位数字。选择哪个类型取决于你的代码需要处理的值的范围。

布尔值

Swift 有一个基本的布尔(Boolean)类型,叫做Bool。布尔值指逻辑上的值,因为它们只能是真或者假。Swift 有两个布尔常量,true和false。

字符串

字符串是字符的序列集合,例如:

"Hello, World!"

字符

字符指的是单个字母,例如:

"C"



数值范围

下表显示了不同变量类型内存的存储空间,及变量类型的最大最小值:

类型

大小(字节)

区间值

Int8

1 字节

-127 到 127

UInt8

1 字节

0 到 255

Int32

4 字节

-2147483648 到 2147483647

UInt32

4 字节

0 到 4294967295

Int64

8 字节

-9223372036854775808 到 9223372036854775807

UInt64

8 字节

0 到 18446744073709551615

Float

4 字节

1.2E-38 到 3.4E+38 (~6 digits)

Double

8 字节

2.3E-308 到 1.7E+308 (~15 digits)


//***********swift--1.3.3--数据类型--***************************
// 1.整形的表示范围 (我的电脑64位)

var interParame :Int = 1000000000000000000
var interParam1 :Int = 9223372036854775807
var interParam2 :UInt = 18446744073709551615


// 2.float的表示范围 (4个字节)
var floatParame :Float = 1.55456/(10000*10)
print(floatParame)
String(format: "%.4f", floatParame)

var floatParame1 :Float = 1.2E-37
print(floatParame1)

var floatParame2 :Float = 1.2E-38
print(floatParame2)
String(format: "%f", floatParame2)

var floatParame3 :Float = 1.2E-39
print(floatParame3)



var floatParam4 :Float = 3.4E+37
print(floatParam4)

var floatParam5 :Float = 3.4E+38
print(floatParam5)

var floatParam6 :Float = 3.4E+39
print(floatParam6)

var floatParam7 :Float = 3.333376999E+38
print(floatParam7)

var floatParam8 :Float = 3.123456E+38
print(floatParam8)
String(format: "%.2f", floatParam8)


// 3.double的表示范围 (8个字节)精度更高。不再赘述。
var doubleParame :Double = 1.55456/(10000*10)
print(doubleParame)
String(format: "%.4f", doubleParame)

var doubleParame1 :Double = 1.2E-5
print(doubleParame1)
String(format:  "%f", doubleParame1)


var doubleParame2 :Double = 3.4E+37
print(doubleParame2)

var doubleParame3 :Double = 3.333376999E+38
print(doubleParame3)

var doubleParame4 :Double = 3.123456E+38
print(doubleParame4)
String(format:  "%.2f", doubleParame4)