【发布时间】:2018-09-05 14:08:23
【问题描述】:
xcode 有什么问题?获取密钥 9.0 的 nil
@IBAction func sliderAction(_ sender: UISlider) {
speed = round(sender.value / step) * step
sender.value = speed
speedLabel.text = modeDict[sender.value]
print(sender.value)
print(speedLabel.text)
}
let modeDict : [Float : String] = [ 0.8 : "Pls delete game, you noob", 0.9 : "Pff, girl", 1.0 : "Optimal", 1.1 : "Very Hard", 1.2 : "Almost Unreal"]
let step : Float = 0.1
var speed : Float = 0.0
//
打印那么,为什么是 9.0 -> nil ?
0.8 可选(“请删除游戏,你这个菜鸟”)
0.9 无
1.0 可选(“最佳”)
1.1 可选(“非常难”)
1.2 可选的(“几乎是虚幻的”)
【问题讨论】:
-
why 9.0 -> nil....9.0 还是 0.9 ? -
Float是二进制浮点数,不能 准确地表示值0.9。因此,使用 Float 或 Double 作为字典键是有问题的。 -
试试
print(modeDict),你会看到..., 0.899999976: "Pff", ... -
也许它对你有帮助(尽管它适用于 python,但方法相似)stackoverflow.com/questions/23721230/…
-
@MartinR,谢谢