对具有浮点值的整数进行运算的最佳实践?

Best practice to operate on integers with floating point values?

我经常不得不使用带整数的浮点数。例如:

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

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

我必须将整数 wholeValue 转换为 Float,应用运算,然后将结果转换回 Int。这真的很笨拙和乏味。有没有更好的方法用浮点数来操作整数?

您可以使用泛型并创建接受任何类型的模板函数。然后,您可以使用 typeof 为每个接受的参数创建一个案例:

有关详细信息和实施,请参阅 swift 语言指南 link。你会想滚动到通用函数,但要阅读整个 page/section。

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

解决这个问题的一种方法是实现您自己的自定义运算符,这是一个简单的示例,我在其中创建了一个运算符 **,用于乘以 Int 和 Double 以及 return一个整数

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

有关详细信息,请参阅 The Swift Programming Language

中的运算符章节