swift - 有趣(奇怪)的结果导致 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
解决方案
推荐阅读
- reactjs - React:在所有路由上进行身份验证
- c++ - OpenVINO GPU 性能优化
- hornetq - 从 HornetQ 升级到 Artemis ActiveMQ 时的性能问题
- ios - 是否可以创建自签名 ssl 证书以避免应用程序代码中的“挑战”?
- ios - UICollectionView reloadData() 导致单元格重叠
- html - 组件标题文本的元素
- c - C中的冒泡排序:垃圾值错误
- wordpress - Wordpress 用 div 换行选择元素
- android - 如果手机一夜不活动,则不会触发 Android PHONE_STATE
- angular - 通过json显示列表中的特定项目