Se la precisione è importante e hai bisogno di risultati coerenti, ecco alcune proposizioni che restituiranno la parte decimale di qualsiasi numero come stringa, incluso lo "0" iniziale. Se ne hai bisogno come float, aggiungi semplicemente var f = parseFloat( result )
alla fine.
Se la parte decimale è uguale a zero, verrà restituito "0,0". I numeri Null, NaN e non definiti non vengono testati.
1. String.split
var nstring = (n + ""),
narray = nstring.split("."),
result = "0." + ( narray.length > 1 ? narray[1] : "0" );
2. String.substring, String.indexOf
var nstring = (n + ""),
nindex = nstring.indexOf("."),
result = "0." + (nindex > -1 ? nstring.substring(nindex + 1) : "0");
3. Math.floor, Number.toFixed, String.indexOf
var nstring = (n + ""),
nindex = nstring.indexOf("."),
result = ( nindex > -1 ? (n - Math.floor(n)).toFixed(nstring.length - nindex - 1) : "0.0");
4. Math.floor, Number.toFixed, String.split
var nstring = (n + ""),
narray = nstring.split("."),
result = (narray.length > 1 ? (n - Math.floor(n)).toFixed(narray[1].length) : "0.0");
Ecco un link jsPerf: https://jsperf.com/decpart-of-number/
Possiamo vedere che la proposta n. 2 è la più veloce.
n = Math.floor(n);
restituisce solo il risultato desiderato (la parte intera) per i numeri non negativi