Localization Service in Lightning Components

This would need to get fixed in aura itself to allow one to specify the decimal places.

Since percent is fairly standard across all localizations you could 'hack' it by adding this function to a helper, which just adjusts the localization format string for the NumberFormat it creates for percent:

({
  formatPercent: function(num, decimals) {
    var decimalString = '0.';
    while (decimals-- > 0) decimalString += '0';
    return $A.localizationService.getNumberFormat(
        $A.get("$Locale.percentFormat").replace('0', decimalString)
        ).format(num);
  }
})

and then your Controller becomes:

({
 doInit: function(component, event, helper) {
     var num = 0.5456
     component.set("v.percent", helper.formatPercent(num, 2));
     // returns 54.56%
 }
})

note that this solution will add zeros padded to the end if you do something like:

helper.formatPercent(0.233, 2);
// returns 23.30%

one could check the decimals places of the number passed in and limit the decimalString, but maybe not depending out how you want it to render.