Я хочу преобразовать Float
в Int
в Swift. Базовое приведение типа не работает, потому что эти типы не являются примитивами, в отличие от float
s и int
s в Objective-C
var float: Float = 2.2
var integer: Int = float as Float
Но это выдает следующее сообщение об ошибке:
«Float» не конвертируется в «Int»
Любая идея, как свойство конвертировать из Float
в Int
?
as
оператор для понижающей кинопробы подклассов. то есть:UIView as UIButton
Ответы:
Вы можете конвертировать
Float
вInt
в Swift , как это:Вы также можете достичь этого результата с помощью комментария @ paulm:
источник
var myIntValue = Int(myFloatValue)
работает.Явное преобразование
Преобразование в Int потеряет любую точность (эффективно округляя). Получая доступ к математическим библиотекам, вы можете выполнять явные преобразования. Например:
Если вы хотите округлить и преобразовать в целое число:
результат 10.
Если вы хотите округлить и преобразовать в целое число:
результат 11.
Если вы хотите явно округлить до ближайшего целого
результат 11.
В последнем случае это может показаться педантичным, но семантически понятнее, так как нет неявного преобразования ... важно, например, если вы выполняете обработку сигнала.
источник
round(10.5) == 11.0
Конвертировать просто:
Но это не безопасно
Будет из-за приятной аварии:
Итак, я создал расширение, которое обрабатывает переполнение:
Я надеюсь, что это может помочь кому-то
источник
Есть много способов округлить число с точностью. В конечном итоге вы должны использовать стандартный библиотечный метод swift
rounded()
для округления числа с плавающей запятой с желаемой точностью.Чтобы округлить , используйте
.up
правило:Для круглого вниз используйте
.down
правило:Чтобы округлить до ближайшего целого, используйте
.toNearestOrEven
правило:Помните о следующем примере:
источник
Как это:
источник
Вы можете получить целочисленное представление вашего числа с плавающей точкой, передав его в метод инициализатора Integer.
Пример:
Имейте в виду, что любые цифры после десятичной точки будут потерями. Значение 3.9 - это Int из 3, а 8.99999 - это целое число из 8.
источник
Используйте преобразование стиля функции (см. Раздел «Преобразование целых чисел и чисел с плавающей точкой» в « Языке программирования Swift». [Ссылка на iTunes])
источник
Вы можете напечатать приведение как это:
источник
Просто используйте тип литья
будет показано значение округления, например: IntegerValue = 5 означает, что десятичная точка будет потеря
источник
источник
Этого достаточно, чтобы преобразовать из
float
вInt
источник
Предположим, вы храните значение с плавающей запятой в
"X"
и целочисленное значение в"Y"
.или
источник
Используйте
Int64
вместоInt
.Int64
может хранить большие значения int.источник
Float
диапазоном значений, большим, чемInt
?