我的结构如下:
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
我认为这是因为双精度但不知道如何处理它。任何帮助非常感谢!
正如@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