【问题标题】:Strange output for same Double value相同 Double 值的奇怪输出
【发布时间】:2018-09-18 06:38:53
【问题描述】:

我的结构如下:

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】:

正如@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

【讨论】:

    猜你喜欢
    • 2017-06-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-06-23
    • 2016-11-06
    • 1970-01-01
    • 2021-12-03
    相关资源
    最近更新 更多