Swift 对具有浮点值的整数进行操作的最佳实践?
我经常不得不将浮点数与整数结合使用。例如:Swift 对具有浮点值的整数进行操作的最佳实践?,swift,math,floating-point,integer,swift4,Swift,Math,Floating Point,Integer,Swift4,我经常不得不将浮点数与整数结合使用。例如: var percent:Float = 0.6347 var wholeValue:Int = 10 var result = Int(Float(wholeValue) * percent) 我必须将整型wholeValue转换为Float,应用该操作,然后将结果转换回Int。这真是笨重乏味。有没有更好的方法来操作带浮点数的整数?您可以使用泛型并创建接受任何类型的模板函数。然后,您可以使用typeof为每个接受的参数创建一个案例: 请参阅swif
var percent:Float = 0.6347
var wholeValue:Int = 10
var result = Int(Float(wholeValue) * percent)
我必须将整型
wholeValue
转换为Float
,应用该操作,然后将结果转换回Int
。这真是笨重乏味。有没有更好的方法来操作带浮点数的整数?您可以使用泛型并创建接受任何类型的模板函数。然后,您可以使用typeof为每个接受的参数创建一个案例:
请参阅swift语言指南链接以了解更多详细信息和实施。您需要滚动到通用函数,但需要阅读整个页面/部分
解决这个问题的一种方法是实现您自己的自定义运算符,下面是一个简单的示例,我创建了一个运算符
**
,用于乘法和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
欲了解更多信息,请参阅中的“操作员”一章是的,我只想将其设置为trunc,否则我将使用ceil。但是,这只是一个例子。