Swift 4 Introduction系列1.4 — Swift数据类型转换

我们无法对具有不同数据类型的变量执行计算。 例如,我们不能添加带有整数(Int)变量的浮点数(Double)。 为了能够执行这样的计算,我们必须将整数转换为浮点数。 同样,我们不能使用UInt16变量添加属于数据类型Int8的变量。

对于数据类型之间的转换,语法如下:

让 = ()

要么

var = ()

要么

= ()

数据类型转换的基本规则是: 要转换的数据类型可接受要转换的数据

因此,我们必须知道数据类型限制,以便我们能够正确执行转换。

要在位大小数据之间转换,我们需要使用以上语法。

例:

 设numberA:UInt8 = 87 
让numberB:Int16 = 43
设numberC = 23个let numberD = Int16(12)let numberE = Int32(numberA)
var numberF = UInt16(numberB)
令numberG = UInt64(numberC)numberF = UInt16(numberD)

如上面的示例所示,我们可以在转换括号中包含数字文字,如NumberD所示。 要重新分配变量,我们需要将转换器的数据类型与等式左侧的变量匹配,如最后一条语句中的numberF所示。 对于声明,请注意,变量将采用转换器指定的任何数据类型。

我们还可以先声明常量或变量,然后再执行赋值。 请注意,转换器必须与声明的变量或常量具有相同的数据类型。

例:

 设numberI:UInt64numberI = UInt64(numberA)var numberJ:Int16numberJ = Int16(numberC) 

我们还可以执行如下所示的计算:

 令numberH = UInt32(numberA)+ UInt32(numberB)+ UInt32(numberC) 

在上面的示例中,如果任何数字是我们想要的数据类型,我们可以忽略转换器。 请参见下面的另一个示例。

在下面的示例中,我们将添加一个Int8,Int16和UInt32。 如果我们想要的总和的数据类型在操作数中(在本例中为UInt32),那么我们可以忽略转换器。

例:

 让numberX:Int8 = 54 
让numberY:UInt32 = 885665
让numberZ:Int16 = 2565let numberXYZ = UInt32(numberX)+ numberY + UInt32(numberZ)

重要说明:请注意,在转换期间,分配的数据类型必须能够接受转换后的数字。

例:

  let numberK:UInt32 = 522 //由于Int8不能接受大于128let的任何数字,因此以下语句将生成错误numberL = Int8(numberK) 

更多示例:

  //:对于数据转换,请使用desiredDataType(InitialValueOrVariable) 
让val36:UInt16 = 0xFFFE
令val37:UInt8 = 1
令val38:UInt16 = val36 + UInt16(val37)
// let val39 = val36 + 2 //此语句将产生错误,因为它将超过其最大值
令val39 = Int(val36)+ 2
//在上一条语句中,我们将val36从UInt16转换为Int,以允许更多数字。

如前所述, UIntInt源自CPU功能。 如果CPU是32位,则UInt和Int分别与UInt32和Int32相同。 假设我们的CPU是64位的,那么我们可以互换使用Int64或Int。 但是,建议保持Int的互操作性。

要在UInt和Int之间转换,我们可以使用前面提到的相同语法。

例:

  //从Int转换为Uint 
令numberM = 21546658785652令numberN = UInt(numberM)

范例2:

  //从UInt转换为Int 
让numberO:UInt = 321654655var numberP = Int(numberO)

要在Float和Double之间进行转换,我们使用相同的语法。

例:

  //从Float转换为Double 
让shortDecimal1:Float = 2.658846542let longDecimal1 = Double(shortDecimal1)

从上面的示例中,我们还注意到十进制数字与最初输入的数字并不完全相同。 这是由于计算机使用浮点数的方式。 最后一位或2可能不正确。 实际上,在十进制精度很重要的情况下,我们通常会舍弃最后两个小数位。

范例2:

  //从Double转换为Floatlet longDecimal2 = 9.32655646655879523let shortDecimal2 = Float(longDecimal2) 

为了从小数点后的位转换为小数点后的位,通常将长格式截断。

下面的示例演示了从整数到浮点数(双精度)的转换。

例:

  //从Int转换为Doublelet number1 = 2546let number2 = Double(number1)print(number2) 

如果我们看一下右边的结果,显示编号是相同的。 如果我们使用print语句,由于常量是双精度数,它将打印带有.0的数字。

要将浮点数转换为整数,请注意,系统将删除小数点并保留整数。 系统将不会舍入到最接近的整数。 它将只删除小数位。

例:

  //从Double转换为Intlet number3 = 2.99464513let number4 = Int(number3)print(number4) 

同样,在执行计算和数据类型转换时,我们不需要转换具有所需数据类型的操作数。

例:

 让number10 = 6 
让number11 = 0.654596let number12 = Double(number10)+ number11

更多示例:

  //要使用整数和浮点数执行计算,请始终将整数转换为浮点数 
令val40 = 2
令val41 = 0.1718
令val42 = Double(val40)+ val41
//如果我们不将val40转换为Double,则前一条语句将产生错误,因为我们无法使用Double添加Integer
令val43 = 2 + 0.1718

要将文本转换为数字,文本必须为正确的数字:

例:

  //从字符串转换为Double / Int 
让text1 =“ 12.345” let number5 = Double(text1)let number6 = Int(text1)let text2 =“ 556” let number7 = Int(text2)

如上例所示,字符串“ 12.345”不能转换为Int。

例:

  //从Double / Int转换为String 
让number8 = 256let文本3 =字符串(number8)let number9 = 2.78846562 var text4 =字符串(number9)

更多示例:

  //若要将数字与字符串一起使用,我们需要将数字数据类型显式转换为字符串 
让myName =“ Thomas”
让mySocialSecurity = 12532455
让myLine1 = myName +“社会安全号码为” + String(mySocialSecurity)//或我们可以对字符串进行插值
让myline2 =“ \(myName)的社会保险号为\(mySocialSecurity)” let hisName1 =“ Steve”
让他的收益:浮动= 145258
让myLine3 =“ \(hisName1)刚刚为此项目赚了$ \(hisEarnings * 0.25)。

类型转换也称为数据类型类型转换。 以下示例展示了对基本数据类型的全面类型转换:

  //:综合类型转换 
//从字符串转换为整数
让str1 =“ 9384”
令num1 = Int(str1)
num1 //从整数转换为字符串
让num2 = 5478955
让str2 =字符串(num2)
str2 //从字符串转换为32位整数
让str3 =“ 454234”
let num3 = Int32(str3)//从默认整数转换为16位整数
让numi1 = 54
let numi2 = Int16(numi1)//从默认整数转换为8位整数
让numi3 = 12
let numi4 = Int8(numi3)//从默认的8位整数转换为默认整数
令numi5 = numi4
let numi6 = Int(numi5)//从默认double转换为float
令num4 = 25.3
let num5 = Float(num4)//从float转换为double
令num6 = num5
let num7 = Double(num6)//从默认的double转换为整数。 请注意,小数点将被截断。
令num8 = 32.946
let num9 = Int(num8)//从整数转换为双精度。 价值不变。
让num10 = 2145
let num11 = Double(num10)//从双精度转换为字符串
让num12 = 32.65
let str4 = String(num12)//从字符串(带小数)转换为浮点型和双精度型。 请注意,浮点数可以接受更少的小数
让str5 =“ 2145.3256525656”
让num14 = Float(str5)
令num15 = Double(str5)

最初于 2018 年4月16日 发布在 blog.swifticode.com 上。