在溢出的情况下如何在 swift 中截断

How doubles truncate in swift in case of overflow

我知道 swift 的 Double 值有 15 个小数点精度所以我取了一个变量

let pi: Double = 3.1415926535897932384

REPL 返回我

pi: Double = 3.1415926535897931

有一件事我可以清楚地看到 REPL 已将 32384 舍入为 31(以防溢出)。那么,它是否遵循四舍五入或其他标准的数学规则。

此行为必须执行浮点数以二进制表示的方式。因此,转换为二进制不会四舍五入到下一个十进制表示形式,而是将其转换为下一个二进制表示形式。

// test this in a playground
9.05 // returns 9.050000000000001

一般情况下,您不应考虑双精度值的最后一位。