【问题标题】:How doubles truncate in swift in case of overflow在溢出的情况下如何快速截断双打
【发布时间】:2015-07-23 05:14:09
【问题描述】:

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

let pi: Double = 3.1415926535897932384

然后 REPL 还给了我

pi: Double = 3.1415926535897931

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

【问题讨论】:

  • 那不叫溢出,只是浮点舍入误差。一般只能保留15位数

标签: swift read-eval-print-loop


【解决方案1】:

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-10-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多