Como lo mencionó Joakim Danielson y se señaló en la Documentación para desarrolladores de Apple
... Debido a que los tipos numéricos tienen diferentes capacidades de almacenamiento, intentar inicializar con un valor de un tipo y acceder al valor de otro tipo puede producir un resultado erróneo...
Y dado que la estructura Int de Swift no puede representar valores de NaN, obtiene este resultado erróneo.
En su lugar, podría usar Int 's Failable Initialiser init(exactly:) que convierte su NSDecimalNumber en un Int? eso contendrá su valor o será nil si no es representable por un Int .
let strangeNumber = NSDecimalNumber.notANumber // nan let integerRepresentation = Int(exactly: strangeNumber) // nil