Wenn Präzision wichtig ist und Sie konsistente Ergebnisse benötigen, finden Sie hier einige Vorschläge, die den Dezimalteil einer beliebigen Zahl als Zeichenfolge zurückgeben, einschließlich der führenden "0". Wenn Sie es als Schwimmer benötigen, fügen Sie es var f = parseFloat( result )
am Ende hinzu.
Wenn der Dezimalteil gleich Null ist, wird "0.0" zurückgegeben. Null-, NaN- und undefinierte Zahlen werden nicht getestet.
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");
Hier ist ein jsPerf-Link: https://jsperf.com/decpart-of-number/
Wir können sehen, dass Satz Nr. 2 der schnellste ist.
n = Math.floor(n);
nur das gewünschte Ergebnis (der ganzzahlige Teil) für nicht negative Zahlen zurückgegeben wird