Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Swift 对具有浮点值的整数进行操作的最佳实践?_Swift_Math_Floating Point_Integer_Swift4 - Fatal编程技术网

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。但是,这只是一个例子。