ios - 相同 Double 值的奇怪输出

标签 ios swift double precision

我的结构如下:

struct Foo {
    var number: Double

    public init(number: Double) {
        self.number = number
    }
}

但是当我运行这段代码时 ->

var x: Double = 1.12
let foo = Foo(number: x)

print(foo)
print(foo.number)

我得到以下输出:

Foo(number: 1.1200000000000001)
1.12

我认为这是因为 double 但不知道如何处理。非常感谢任何帮助!

最佳答案

正如@MartinR 解释的答案,Why are doubles printed differently in dictionaries?

很明显,1.1200000000000001,是1.12的 double 值。

当您尝试打印 foo 对象时,print(foo) 对象连同其包含的信息一起打印,其中 number 保存 1.21

然而,当您直接print(foo.number) 时,将打印foo.number 的字符串表示形式,实际上是1.21

关于ios - 相同 Double 值的奇怪输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52380354/

相关文章:

ios - 从 Apple 推送通知中识别无效 token

ios - 如何在IOS中实现类似于gmail的 float "New Mail Button"?

ios - 两个单独的 cookie 存储(UIWebView 或 WKWebView)

java - Double 代替 Float 和 Float 舍入

ios - 当我尝试存档时找不到 GDataCalendar.h

swift - 如何使用 Xcode 转换器创建 USDZ 文件?

ios - 如何修复 user = [AuthDataResult?] nil 和错误 - FIRAuthDomain 代码 17026

java - 将 double 格式格式化为小数点后两位 - 编译错误

java - 如何从 double 中删除科学记数法以获得最长的 double 值

ios - PHAssets/PHAssetCollection/PHCollectionList 和文件夹