都没达到我的预期。
解决问题
精度计算的时候我们通常会使用 .toFixed()
方法,Number.toFixed(digits)
方法使用定点表示法来格式化一个数,会对结果进行四舍五入。参数 digits
表示小数点后数字的个数,一般介于 0 到 20 (包括)之间。例如:
JavaScript 代码:
3.3e-7.toFixed(8); // “0.00000033”
3e-7.toFixed(8); // “0.00000030”
一般情况下,我们的需求小数位数是固定的,所以这个基本可以满足我们的需求。但是有些人可能不喜欢 0.00000030
这种形式,认为最后的 0
是多余的。所以索性就改进了一下:
JavaScript 代码:
function toNumberStr(num,digits) {
// 正则匹配小数科学记数法
if (/^(\d+(?:.\d+)?)(e)([-]?\d+)$/.test(num)) {
// 正则匹配小数点最末尾的0
var temp=/^(\d{1,}(?:,\d{3}).(?:0[1-9]+)?)(0*)?$/.exec(num.toFixed(digits)) ;
if(temp){
return temp[1];
}else{
return num.toFixed(digits)
}
}else{
return “”+num
}
}