如果溢出,如何在swift中截断双倍

时间:2015-07-23 05:14:10

标签: swift read-eval-print-loop

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

let pi: Double = 3.1415926535897932384

和REPL回复了我

pi: Double = 3.1415926535897931

有一件事我可以清楚地看到,REPL已经完成了32384到31(如果出现溢出)。那么,它是否遵循标准数学规则进行四舍五入或其他事情。

1 个答案:

答案 0 :(得分:1)

此行为必须如何以二进制表示浮点数。因此,转换为二进制不会舍入到下一个十进制表示,而是将其转换为下一个二进制表示。

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

一般来说,你不应该考虑双值的最后一位数。