当我从教程中做示例时,我从常量变量主题中得到了一些问题。
如果有人解释我的例子,我将不胜感激。
当您不指定类型时,浮点数文字将被推断为 type Double
。
Double
,顾名思义,比 具有双倍精度Float
。所以当你这样做时:
let a = 64.1
内存中的实际值可能类似于 64.099999999999991。由于Double
仅显示 16 位有效数字,因此显示 64.09999999999999,将最后一个“1”四舍五入。
为什么let b: Float = 64.1
显示正确的数字?
当您指定浮点类型时,精度会降低。Float
仅显示 8 位有效数字。那是 64.099999,但紧随其后的是一个“9”,所以它四舍五入得到 64.1。
这与显式声明变量类型无关。尝试将其指定为Double
:
let b: Double = 64.1
它仍将显示 64.09999999999999。