【发布时间】:2014-06-17 12:52:28
【问题描述】:
Double表示 64 位浮点数。什么时候用 浮点值必须非常大或特别精确。
Float表示一个 32 位浮点数。什么时候用 浮点值不需要 64 位精度。
但后来:
Swift 在推断浮点数类型时总是选择
Double(而不是Float)。
这不是有点矛盾吗? 大多数浮点数的 64 位精度会不会过高?这是否意味着我应该明确定义浮点数,或者实际上差异并不重要?
【问题讨论】:
-
Double 是标量值的最佳选择,原因有几个。首先,浮点数真的不是很准确——将 0.01 加到一百万次总和上,你会得到 9865。其次,大多数现代处理器都是 64 位的,因此在 double 中移动的速度与浮点数一样快。第三,无论哪种情况,CPU 都使用 80 位寄存器来进行浮点数学运算——使用浮点数并没有使计算速度更快。对于 3D 游戏来说,浮点数数组仍然是最好的,因为它们可以最大限度地减少内存使用,同时最大限度地提高内存复制速度和渲染速度 - 并且并非所有 gfx 卡都支持双倍。
标签: swift type-inference