首页 > 解决方案 > 有趣(奇怪)的结果导致 Swift 计算

问题描述

当我在玩和测试各种东西时SwiftUI。我发现了这种奇怪的情况。我猜这与可以处理的极限值有关Double,但无论如何我觉得发帖已经够奇怪了。希望有人能准确地解释发生了什么,或者让我知道我在哪里犯了错误。

似乎以下代码中 t 的任何奇数值都会引起同样的麻烦。

let v:Double = 13082761331670030, t:Double = 1
var u:Double

u = v - t;
u += t;

if u == v {print("All is right.")}
else {
    print("This is weird. We now have:")
    print("v = \(String(format: "%.0f",v)) and u = \(String(format: "%.0f",u))")
}

执行代码会导致:

u != v

标签: swiftdoublearithmetic-expressions

解决方案


推荐阅读