Si un valor de cadena contiene un análisis flotante y formatee de lo contrario, devuelva la cadena

Estoy trabajando con una API que no devuelve nada más que cadenas en la respuesta. Necesito formatear cualquier valor decimal devuelto en la cadena para tener un cero inicial pero cero al final. Si el valor no es un flotante en la cadena, debe devolverse sin ningún cambio de formatting.

Ejemplo: si el valor es ".7", ".70" o "0,70", mi function siempre devolverá "0.7". Si el valor es "1+", devolverá "1+".

Inicialmente pensé que la API devolvía flotadores, así que estaba haciendo esto a continuación. El parámetro param es la cantidad de decimales que se mostrarán.

function setDecimalPlace(input, places) { if (isNaN(input)) return input; var factor = "1" + Array(+(places > 0 && places + 1)).join("0"); return Math.round(input * factor) / factor; }; 

¿Cómo puedo lograr lo que está haciendo la function anterior cuando el valor es una cadena decimal, pero simplemente devuelve el valor invocado si la cadena no contiene un flotante? Como un lado, estoy usando Angular y terminaré haciendo de esto un filter.

ACTUALIZACIÓN # 2

También desde https://stackoverflow.com/a/3886106/4640499

 function isInt(n) { return n % 1 === 0; } 

Entonces, al final, puedes verificar si está isFloat entonces no es isInt entonces concluye que es una Cadena.

Como dijiste (comentario) en el caso de '7.0':

 var v = '7.0'; var formatted = (isFloat(v) || isInt(parseFloat(v))) ? parseFloat(v) : v; 

ACTUALIZAR

En realidad, no hay necesidad de la function numberFormat :

 var v = '.7'; if(isFloat(v)) var formatted = parseFloat(v); 

Toma estas funciones:

 function isFloat(n) { n = parseFloat(n); // from https://stackoverflow.com/a/3886106/4640499 return n === Number(n) && n % 1 !== 0; } function numberFormat(e, t, n, o) { // from http://phpjs.org/functions/number_format/ var r = e, u = isNaN(t = Math.abs(t)) ? 2 : t, c = void 0 == n ? '.' : n, a = void 0 == o ? ',' : o, l = 0 > r ? '-' : '', d = parseInt(r = Math.abs(+r || 0).toFixed(u)) + '', s = (s = d.length) > 3 ? s % 3 : 0 ; return l + (s ? d.substr(0, s) + a : '') + d.substr(s).replace(/(\d{3})(?=\d)/g, '$1' + a) + (u ? c + Math.abs(r - d).toFixed(u).slice(2) : ''); } function formatFloat(e) { return numberFormat(e, 1); } 

Y entonces:

 var v = '.7'; console.info(isFloat(v)); console.info(formatFloat(v)); if(isFloat(v)) formatFloat(v);