对具有浮点值的整数进行运算的最佳实践?
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
中的运算符章节
我经常不得不使用带整数的浮点数。例如:
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
中的运算符章节