function toNonExponential(num) {
var m = num.toExponential().match(/\d(?:.(\d*))?e([±]\d+)/);
return num.toFixed(Math.max(0, (m[1] || ‘’).length - m[2]));
}
toNonExponential(3.3e-7) // “0.00000033”
toNonExponential(3e-7) // “0.0000003”
toNonExponential(1.401e10) // “14010000000”
toNonExponential(0.0004) // “0.0004”
解析一下:
用.toExponential()将数字转化为科学记数法表示,匹配正则表达式/\d(?:.(\d*))?e([±]\d+)/,获取科学记数法中小数点后的字符及幂指数(e 后面的值),这样可以确定数字是几位小数。再用toFixed() 转换成数值表示。