Как упомянуто Joakim Danielson и отмечено в Документации для разработчиков Apple
... Поскольку числовые типы имеют различные возможности хранения, попытка инициализации со значением одного типа и доступ к значению другого типа может привести к ошибочному результату ...
И поскольку структура Int
Swift не может представлять значения NaN, вы получите этот ошибочный результат.
Вместо этого вы можете использовать Int
Failable Initializer init(exactly:)
, который преобразует ваш NSDecimalNumber в Int?
, который будет либо содержать его значение, либо будет nil
, если он не может быть представлен Int
.
let strangeNumber = NSDecimalNumber.notANumber // nan
let integerRepresentation = Int(exactly: strangeNumber) // nil