相同Double值的奇怪输出

问题描述 投票:1回答:1

我的结构如下:

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

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

ios swift double precision
1个回答
1
投票

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

很明显,1.1200000000000001,是1.12的双精度值。

当您尝试打印foo对象时,print(foo)对象将随其封闭信息一起打印,其中number保持双重精确值为1.21

然而,当你直接print(foo.number),那么foo.number的字符串表示正在打印,实际上是1.21

© www.soinside.com 2019 - 2024. All rights reserved.