Si la précision est importante et que vous avez besoin de résultats cohérents, voici quelques propositions qui renverront la partie décimale de n'importe quel nombre sous forme de chaîne, y compris le "0" principal. Si vous en avez besoin comme flotteur, ajoutez simplement var f = parseFloat( result )
à la fin.
Si la partie décimale est égale à zéro, "0,0" sera retourné. Les nombres nuls, NaN et non définis ne sont pas testés.
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");
Voici un lien jsPerf: https://jsperf.com/decpart-of-number/
Nous pouvons voir que la proposition n ° 2 est la plus rapide.
n = Math.floor(n);
ne renvoie que le résultat souhaité (la partie entière) pour les nombres non négatifs