做项目的时候遇到过, JS 当小数位数, 超出7位的时候,会自动转换为科学计数法。 处理方案吧,有俩种: 1.第一种有正则匹配。具体方法网上有很多。 2.第二种就是强制保留位数
var num=312312312312;
var rs3=num.toFixed(14);
console.log(rs3)
关于处理小数位数JS有可以直接使用的api(例如下面的保留有效数字俩位)
var bit_str = f.toPrecision(2);
随着公司项目的进展科学计数的问题日益严重,所以必须对方法进行更新,下面的方法就是合并所有可用的方法,并且兼容处理各种计算问题的一个方法。后期应该还会更新的吧。
好的废话不多说,咱开始贴代码
function to_num(num) {
num == '-' ? num = 0 : '';
try {
var bit_str = num.toString().split('.')[1];
if(num%1 == 0){
return parseFloat(num);
return false;
}
for(var i=bit_str.length;i>=0;i--){
var n = bit_str.substr(i, 1);
if(n != 0){
var m = new Number(num);
return m.toFixed(i + 1);
return false;
}
}
}catch(e){}
}
// 科学计数法转换为数字
function scientificToNumber(num) {
var str = num.toString();
var reg = /^(\d+)([Ee])([\-]?\d+)$/;
var arr, len,
zero = '';
if (!reg.test(str)) {
if(num.toString().indexOf('.') != -1 && num.toString().indexOf('e') != -1){
var len = Math.abs(num.toString().split('e')[1]);
var len1 = num.toString().split('.')[1].split('e')[0];
var num_ = parseFloat(num).toFixed(len1.length + len);
return num_;
}else {
return to_num(num);
}
} else {
arr = reg.exec(str);
len = Math.abs(arr[3]) - 1;
for (var i = 0; i < len; i++) {
zero += '0';
}
return '0.' + zero + arr[1];
}
}
var html = '<div>' + scientificToNumber('0.9e-10') +'</div>';
$('body').html(html);
需要的小伙伴可用拿去用,处理极限小的科学计数法应该有用。 后期应该还有优化的可能性。暂时先放在这这样。