Странный вывод для того же значения Double - PullRequest
0 голосов
/ 18 сентября 2018

У меня есть следующая структура:

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 голосов
/ 18 сентября 2018

Как и в ответе, объясненном @MartinR, Почему двойники печатаются по-разному в словарях?

Понятно, что 1.1200000000000001 , является значением двойной точности 1,12 .

Когда вы пытаетесь напечатать объект foo, объект print(foo) печатается вместе с вложенной информацией, в которой number содержит двойное точное значение 1.21

Принимая во внимание, что когда вы напрямую print(foo.number), печатается строковое представление foo.number, которое на самом деле 1,21

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...