Как преобразовать значение с плавающей запятой больше, чем Int.max в Int в Swift

Я хочу иметь целочисленное значение следующего значения с плавающей запятой:

var floatingPointValue = NSDate().timeIntervalSince1970 * 1000

Мне все равно, если целочисленное значение этого числа с плавающей запятой фактически является целым числом или строкой.

Ответ 1

Int64 достаточно велик, чтобы удерживать временной интервал в несколько миллионов лет, измеренных в миллисекундах:

let milliSeconds = Int64(someDate.timeIntervalSince1970 * 1000)
let milliSecondsString = String(milliSeconds)

Ответ 2

Int64 достаточно, чтобы сохранить нужное значение

let floatingPointValue = NSDate().timeIntervalSince1970 * 1000
let intValue = Int64(floatingPointValue)

Ответ 3

Вы должны использовать Int64 потому что Date().timeIntervalSince1970 возвращает, например, 1561124475.900897 после того, как вы умножите 1000, в результате вы получите 1561124475900. Int для 32-битной арки - до 2147483647.

Например, вы можете столкнуться с этой проблемой на iPhone 5 (32-битная арка), но на 5S (32-битная арка) нет проблем

Узнайте больше здесь