js数字转字符串后科学计数问题
前言:遇到科学计数法转字符串的问题。用如下
toNonExponential可解决
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()
转换成数值表示。