相同的Double值的输出奇怪

时间:2018-09-18 06:38:53

标签: 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

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

1 个答案:

答案 0 :(得分: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