数值型字面量
整数字面量可以被写作:
- 一个十进制数,没有前缀
-
一个二进制数,前缀是
0b
-
一个八进制数,前缀是
0o
-
一个十六进制数,前缀是
0x
下面的所有整数字面量的十进制值都是17
:
let decimalInteger = 17
let binaryInteger = 0b10001 // 二进制的17
let octalInteger = 0o21 // 八进制的17
let hexadecimalInteger = 0x11 // 十六进制的17
浮点字面量可以是十进制(没有前缀)或者是十六进制(前缀是0x
)。小数点两边必须有至少一个十进制数字(或者是十六进制的数字)。浮点字面量还有一个可选的指数(exponent),在十进制浮点数中通过大写或者小写的e
来指定,在十六进制浮点数中通过大写或者小写的p
来指定。
如果一个十进制数的指数为exp
,那这个数相当于基数和10^exp的乘积:
-
1.25e2
%uA0表示 1.25 %uD7 10^2,等于%uA0125.0
。 -
1.25e-2
%uA0表示 1.25 %uD7 10^-2,等于%uA00.0125
。
如果一个十六进制数的指数为exp
,那这个数相当于基数和2^exp的乘积:
-
0xFp2
%uA0表示 15 %uD7 2^2,等于%uA060.0
。 -
0xFp-2
%uA0表示 15 %uD7 2^-2,等于%uA03.75
。
下面的这些浮点字面量都等于十进制的12.1875
:
let decimalDouble = 12.1875
let exponentDouble = 1.21875e1
let hexadecimalDouble = 0xC.3p0
数值类字面量可以包括额外的格式来增强可读性。整数和浮点数都可以添加额外的零并且包含下划线,并不会影响字面量:
let paddedDouble = 000123.456
let oneMillion = 1_000_000
let justOverOneMillion = 1_000_000.000_000_1