I'm playing a bit with extensions for default protocols in Swift 3.0.I would like to implement rounded(toPlaces places: Int) -> Self for Double, Float.Both of these structs refer to FloatingType protocol. I wrote small extension for FloatingType protocol:extension FloatingPoint {    typealias Exponent = Int // is this okay? how can I write where `Exponent: Int` ?    public func rounded(toPlaces places: Int) -> Self {        guard places >= 0 else { return self }        let divisor = Self(Int(pow(10.0, Double(places))))        //let divisor = Self(sign: .plus, exponent: places, significand: Self(Int(pow(5, Double(places)))))        return (self * divisor).rounded() / divisor    }}  However I can't find the most easiest and fastest method. Self(Int(pow(5, Double(places)))) so much conversions... Ugh...The problem is that there is no pow for floating point type, so I need to do lots of conversions. At 1m calls it loses about 0.04s for the Double extension, which doesn't do Self(Int(...)). Is it okay for such method or there is another approach? 
Swift FloatingPoint rounded to places
swift;floating point;extension methods