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