Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to get the Power of some Integer in Swift language?

I'm learning swift recently, but I have a basic problem that can't find an answer

I want to get something like

var a:Int = 3
var b:Int = 3 
println( pow(a,b) ) // 27

but the pow function can work with double number only, it doesn't work with integer, and I can't even cast the int to double by something like Double(a) or a.double()...

Why it doesn't supply the power of integer? it will definitely return an integer without ambiguity ! and Why I can't cast a integer to a double? it just change 3 to 3.0 (or 3.00000... whatever)

if I got two integer and I want to do the power operation, how can I do it smoothly?

Thanks!

like image 438
林鼎棋 Avatar asked Sep 28 '22 20:09

林鼎棋


People also ask

How do you check if a number is a power of 2 Swift?

Partial answer: If it's a FixedWidthInteger and it's positive and its non zero bit count is 1, then it is a power of 2. For a floating point number, I think you can just test the significand. If it is exactly 1, the number is a power of 2.

How do you write to the power of code?

pow() is function to get the power of a number, but we have to use #include<math. h> in c/c++ to use that pow() function. then two numbers are passed. Example – pow(4 , 2); Then we will get the result as 4^2, which is 16.

How do you calculate square in Swift?

The sqrt() function in Swift returns the square root of a non-negative number. The figure below shows the mathematical representation of the sqrt() function. Note: We need to import Foundation in our code to use the sqrt() function.


Video Answer


1 Answers

If you like, you could declare an infix operator to do it.

// Put this at file level anywhere in your project
infix operator ^^ { associativity left precedence 160 }
func ^^ (radix: Int, power: Int) -> Int {
    return Int(pow(Double(radix), Double(power)))
}

// ...
// Then you can do this...
let i = 2 ^^ 3
// ... or
println("2³ = \(2 ^^ 3)") // Prints 2³ = 8

I used two carets so you can still use the XOR operator.

Update for Swift 3

In Swift 3 the "magic number" precedence is replaced by precedencegroups:

precedencegroup PowerPrecedence { higherThan: MultiplicationPrecedence }
infix operator ^^ : PowerPrecedence
func ^^ (radix: Int, power: Int) -> Int {
    return Int(pow(Double(radix), Double(power)))
}

// ...
// Then you can do this...
let i2 = 2 ^^ 3
// ... or
print("2³ = \(2 ^^ 3)") // Prints 2³ = 8
like image 93
Grimxn Avatar answered Oct 21 '22 00:10

Grimxn