Welcome to Swift (苹果官方Swift文档初译与注解十)---63~69页(第二章)

  如果你将整型与浮点型一起使用,结果将被认为是Double类型:

     et anotherPi = 3 + 0.14159

    // anotherPi 的类型是Double

  上述代码中,3的值是没有明确说明类型,因此,根据剩余部分的浮点类型可以确定返回值为Double.

Numeric Literals (数值的进制表示)

  整数类型可以进行如下表示:

  • A decimal number, with no prefix         // 十进制数值,不需要前缀符号;
  • A binary number, with a 0b prefix         // 二进制数值,使用0b前缀;
  • An octal number, with a 0o prefix          // 八进制数值,使用0o前缀;
  • A hexadecimal number, with a 0x prefix    //十六进制使用0x前缀;

  下面代码中,所有的整型值都是十进制的17:

    let decimalInteger = 17

    let binaryInteger = 0b10001       // 17 in binary notation

    let octalInteger = 0o21           // 17 in octal notation

    et hexadecimalInteger = 0x11     // 17 in hexadecimal notation”

   浮点类型的可以是十进制或者十六进制.在十进制的小数点两边必须都要有值;浮点类型也可以使用指数形式,在十进制中,指数使用大写或者小写的e表示,在十六进制中,使用大写或  者小写的p表示.

  对十进制来说,使用指数exp,表示这个数值乘以10的exp次幂

    1.25e2 means 1.25 × 102, or 125.0.

    1.25e-2 means 1.25 × 10-2, or 0.0125.

  对于十六进制数使用指数exp,表示这个数值乘以2的exp次幂

    0xFp2 means 15 × 22, or 60.0.

    0xFp-2 means 15 × 2-2, or 3.75.

  下面代码中,所有的值都是十进制的12.1875:

    let decimalDouble = 12.1875

    let exponentDouble = 1.21875e1

    let hexadecimalDouble = 0xC.3p0

  数值的表示都可以使用扩展格式来使他们更具有可读性.整型和浮点型都可以增加0和下划线来帮助提高可读性.扩展格式不会改变数值的类型:

    let paddedDouble = 000123.456

    let oneMillion = 1_000_000

    let justOverOneMillion = 1_000_000.000_000_1

Numeric Type Conversion (数值类型转换)

   在代码中,定义整型常量和整型变量,Int是通用性比较好的,即便你使用的值是非负数.使用Int这种默认的类型意味着你的代码可以快速的匹配整数值的类型.

   只有当你确切的需要处理某种数值整型的时候,才推荐使用你指定的类型,因为Int类型可以自动适应扩展数据,有利于性能,内存使用和效率.

Integer Conversion (整型转换)

  不同整型数值类型的常量或变量,它们的数值有效范围是不同的.Int8类型的常量或变量,数值的范围是-128到127,UInt8类型的常量或变量,数值的范围是0到255.当数值超出常量  或变量能够存储的数值范围时,代码在编译的时候会报错:

    let cannotBeNegative: UInt8 = -1

    // UInt8 类型不能存储负数,因此会报错

    let tooBig: Int8 = Int8.max + 1

    // Int8 类型不能存储超过最大值的数,

    // 因此这行代码会报错.

  由于每种数值的类型可以存储不同的取值范围,所以你必须有所选择的进行值的类型转换.

  转换数值类型可以在初始化新值的时候使用一个已经定义过的数值.在下面的代码样例中,常量 twoThousand i的类型是UInt16,而常量one是类型UInt8,他们不可以直接进行相加运   算,因为它们不是相同的类型.然而代码中使用UInt16(one)创建一个新的UInt16类型值来替代原来的类型值.

    let twoThousand: UInt16 = 2_000

    let one: UInt8 = 1

    let twoThousandAndOne = twoThousand + UInt16(one)

  这样在加号的两边数值类型都是UInt16,因此是可以进行运算的.常量 (twoThousandAndOne)的类型将会是UInt16,因为相加的两个数值是UInt16类型.

  在Swift中,默认的类型初始化是使用 SomeType(ofInitialValue) 来传递一个初始值.上面的代码例子中,UInt16可以接收Uint8类型的值,因此可以使用已经定义的UInt8类型值来产生一  个新的UInt16的类型值.不可以使用任意的其他类型.

Integer and Floating-Point Conversion (整型和浮点型转换)

  整型数值与浮点数值之间的转换必须进行明确的声明:

  let three = 3

  let pointOneFourOneFiveNine = 0.14159

  let pi = Double(three) + pointOneFourOneFiveNine

  // pi equals 3.14159, and is inferred to be of type Double

  代码中 Double(three) 使用常量three的值来创建一个新的Double类型的值,因此加号两边的数值类型相同,可以进行运算.如果不进行转换,运算是不能执行的.

  从浮点类型装整数类型,也是与上面一样.整型数值可以使用Double或者Float类型的值来进行初始化:

    let integerPi = Int(pi)

    // integerPi 等于 3, 类型是Int

  浮点类值型转整型值,会被去掉小数部分.例如,4.75转整型是4;-3.9转换整型后是-3.

  注意点

  数值常量或变量的使用与数值型文本是不同的. 数值文本类型的3可以直接与数值文本类型0.14159相加,因为数值文本本身没有明显的类型声明.它们的类型只在编译处理的时候确定.

 

Welcome to Swift (苹果官方Swift文档初译与注解十)---63~69页(第二章),布布扣,bubuko.com

Welcome to Swift (苹果官方Swift文档初译与注解十)---63~69页(第二章)

上一篇:Android数据的四种存储方式之SQLite数据库


下一篇:iOS 单例