我最近在学习swift,但我有一个基本的问题找不到答案
我想要像这样的东西
var a:Int = 3
var b:Int = 3
println( pow(a,b) ) // 27
但是pow函数只能处理双精度数,它不能处理整数,我甚至不能通过Double(a)或a.double()将整型转换为双精度。
为什么它不提供整数的幂呢?它肯定会返回一个没有歧义的整数!为什么我不能将一个整数转换为双精度?它只是将3更改为3.0 (或3.00000...管它呢)
如果我得到了两个整数,并且我想做幂运算,我怎么才能顺利地做呢?
谢谢!
发布于 2014-06-13 10:19:23
除了您的变量声明有语法错误之外,它完全按照您预期的方式工作。您所要做的就是将a
和b
转换为Double并将值传递给pow
。然后,如果您正在处理2个Int,并且希望在操作的另一边返回Int,则只需将其强制转换为Int即可。
import Darwin
let a: Int = 3
let b: Int = 3
let x: Int = Int(pow(Double(a),Double(b)))
发布于 2015-07-09 04:53:42
如果您不倾向于操作符重载(尽管阅读您的代码的人可能对^^
解决方案很清楚),您可以快速实现:
let pwrInt:(Int,Int)->Int = { a,b in return Int(pow(Double(a),Double(b))) }
pwrInt(3,4) // 81
发布于 2015-04-19 06:36:30
更多细节
infix operator ^^ { associativity left precedence 160 }
func ^^ (radix: Int, power: Int) -> Int {
return Int(pow(CGFloat(radix), CGFloat(power)))
}
https://stackoverflow.com/questions/24196689
复制相似问题