Лучшая практика для работы с целыми числами со значениями с плавающей запятой? - PullRequest
0 голосов
/ 22 октября 2019

Часто мне приходится использовать числа с плавающей точкой с целыми числами. Например:

var percent:Float = 0.6347
var wholeValue:Int = 10

var result = Int(Float(wholeValue) * percent)

Я должен преобразовать целое число wholeValue в Float, применить операцию, а затем преобразовать результаты обратно в Int. Это действительно неуклюже и утомительно. Есть ли лучший способ работы с Ints with Floats?

Ответы [ 2 ]

0 голосов
/ 24 октября 2019

Один из способов решить эту проблему - реализовать собственные пользовательские операторы. Вот простой пример, в котором я создал оператор **, который используется для умножения, умножения на Int и Double и возврата Int

infix operator **: MultiplicationPrecedence

extension Int {
    static func ** (left: Int, right: Double) -> Int {
        Int(Double(left) * right)
    }

    static func ** (left: Double, right: Int) -> Int {
        Int(Double(right) * left)
    }
}

Пример

let x = 4 + 10 ** 4.5 - 3.4 ** 2 // x = 43

Подробнее см. Главу «Оператор» в Язык программирования Swift

0 голосов
/ 22 октября 2019

Вы можете использовать универсальные шаблоны и создавать шаблонные функции, которые принимают любой тип. Затем вы можете создать регистр для каждого принятого параметра, используя typeof:

. Для получения дополнительной информации и реализации см. Ссылку на руководство по быстрым языкам. Вы хотите перейти к общим функциям, но прочитать всю страницу / раздел.

https://docs.swift.org/swift-book/LanguageGuide/Generics.html

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