美文网首页
swift 4.x 浮点类型

swift 4.x 浮点类型

作者: redstar110 | 来源:发表于2019-10-15 17:16 被阅读0次

浮点类型有两种表示方式:
(1)Float:表示32位的浮点类型,可以精确到小数点后6位。
(2)Double:表示64位的浮点类型,可以精确到小数点后15位。

let f: Float = 0.123456789
let d: Double = 0.1234567890123456789

具体选用哪种浮点类型,取决于所存储的浮点数的范围。通常情况下,推荐使用Double。
如果声明浮点类型的变量或常量时不指定具体的数据类型,系统默认将该变量或常量的数据类型推断为Double。

let fp = 0.12345
// let fp: Double = 0.12345

浮点类型的直接数有两种指数表示形式:
(1)10进制的指数表示形式
以e作为底数,例如:men = m乘以10的n次方
(2)16进制的指数表示形式
以p作为底数,例如:0xmpn = m对应的十进制数乘以2的n次方

let decimalDouble = 0.380859375

// 380.859375乘以10的-3次方
let exponentDecimalDouble = 380.859375e-3

// (12 + 3 / 16)乘以2的-5次方
let exponentHexadecimalDouble = 0xC.3p-5

/*
 可以给浮点类型的直接数添加若干个0或_,以提高其可读性。
 */
let readableDouble = 001_023_456.007_018_090

/*
 计算机存储浮点数时是不准确的,因此,对于浮点数的比较需要格外小心。
 */
let db = 1.1

// 1.2很可能是:1.19999999999999
db + 0.1 == 1.2

/*
 比较两个浮点数是否相等时,比较可靠的做法是:比较其差的绝对值是否小于一个非常小的数值。
 */
abs(db + 0.1 - 1.2) < 0.00000000000001

如果把两个不同浮点类型的变量或常量进行运算(包括赋值运算、算术运算和比较运算),必须显式地将其转换为相同的浮点类型,否则会编译出错。

var f: Float = 18.0
var d: Double = 23.0

// 把两个不同浮点类型的变量进行赋值运算
// f = d
// d = f

// 必须显式地将其转换为相同的浮点类型
d = Double(f)
f = Float(d)

// 把两个不同浮点类型的变量进行算术运算
// f + d

// 必须显式地将其转换为相同的浮点类型
Double(f) + d
f + Float(d)

// 把两个不同浮点类型的变量进行比较运算
// f > d

// 必须显式地将其转换为相同的浮点类型
Double(f) > d
f > Float(d)

整数类型和浮点类型运算时的相互转换

如果把整数类型和浮点类型的变量或常量进行运算(包括赋值运算、算术运算和比较运算),必须显式地将其转换为相同的类型,否则会编译出错。
当把浮点类型转换成整数类型时,在该浮点类型的值不超出该整数类型所表示数值范围的前提下,浮点类型的值的小数部分会被截掉。

var i8: Int8 = 23
var d: Double = 7.98

// 把整数类型和浮点类型的变量进行赋值运算
// d = i8
// i8 = d

// 必须显式地将其转换为相同的类型
d = Double(i8)
d = 7.98
i8 = Int8(d)

// 把整数类型和浮点类型的变量进行算术运算
// i8 + d

// 必须显式地将其转换为相同的类型
d + Double(i8)
i8 + Int8(d)

// 把整数类型和浮点类型的变量进行比较运算
// i8 > d

// 必须显式地将其转换为相同的类型
d > Double(i8)
i8 > Int8(d)

/*
 在进行显式类型转换时,如果被转换的变量或常量的值超出了转换后的数据类型所能表示的数值范围,程序是可以编译通过的,但是运行时会出错。
 */
d = 798.0

// 被转换的变量的值798.0超出了转换后的数据类型Int8所能表示的数值范围
// Int8(d)

/*
 直接数没有明确的数据类型,直接数的数据类型在编译时才会被推断出来。
 可以把整数类型的直接数直接赋值给浮点类型的变量或常量,也可以把整数类型的直接数和浮点类型的直接数直接运算。
 */
let fp: Double = 10

10 / 3.0

相关文章

  • swift 4.x 浮点类型

    浮点类型有两种表示方式:(1)Float:表示32位的浮点类型,可以精确到小数点后6位。(2)Double:表示6...

  • Swift之数据类型&常量&变量

    Swift类型的介绍 Swift中的数据类型也有:整型/浮点型/对象类型/结构体类型等等 先了解整型和浮点型 整型...

  • Swift中数据类型

    Swift类型的介绍 swift中的数据类型也有:整型/浮点型/对象类型/结构体类型等等 先了解整型和浮点型 整型...

  • Swift中的数据类型详解(2.2版本)(篇章三)

    Swift类型的介绍 Swift中的数据类型也有:整型/浮点型/对象类型/结构体类型等等 先了解整型和浮点型整型有...

  • Swift中数据类型

    Swift中数据类型 标签(空格分隔): Swift Swift类型的介绍 Swift中的数据类型也有:整型/浮点...

  • Swift中数据类型

    Swift类型的介绍 Swift中的数据类型也有:整型/浮点型/对象类型/结构体类型等等先了解整型和浮点型整型有符...

  • swift中的类型推导

    swift中的数据类型 数据类型:整形、浮点型 ,对象类型,结构体类型等 整型 浮点型 类型推导

  • Swift学习 -- 数据类型

    Swift的数据类型介绍: 整型,浮点型,对象类型,结构体类型,枚举类型,共用体类型等等 下面主要介绍整型和浮点型...

  • 03 Swift中的数据类型

    Swift类型的介绍 Swift中的数据类型有: 整型 浮点型 对象类型(NSString是对象) 结构体类型(s...

  • Swift--Swift原生数据类型

    Swift数据类型 整型 浮点型 数字表达式 数字类型之间的转化 布尔型 元组类型 可选类型 Swift数据类型 ...

网友评论

      本文标题:swift 4.x 浮点类型

      本文链接:https://www.haomeiwen.com/subject/jkgsmctx.html