如果精度很重要,并且您需要一致的结果,则以下命题将以字符串形式返回任何数字的小数部分,包括前导“ 0”。如果您需要它作为浮点数,则只需var f = parseFloat( result )
在末尾添加即可。
如果小数部分等于零,则将返回“ 0.0”。空,NaN和未定义的数字未经过测试。
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");
这是jsPerf链接:https ://jsperf.com/decpart-of-number/
我们可以看到,命题2是最快的。
n = Math.floor(n);
仅返回非负数的期望结果(整数部分)