今天在页面数据显示问题上遇到一个坑。在数值非常小的时候,比如0.0000000233,js会将这样的数值转换为科学记数法。
const a = 0.0000000233;
console.log(a);
打印出来是这样,显示成了科学记数法
menu.saveimg.savepath20180831170636.jpg
研究了一下发现,js在数值小数点前面为0,小数点后十分位(包含十分位)之后连续零的个数大于等于6个的情况下会将数值自动转换为科学计数法。
const a = 0.00001;
const aa = 0.000001;
const aaa = 0.0000001;
console.log(a);
console.log(aa);
console.log(aaa);
输出为:
menu.saveimg.savepath20180831173306.jpg
但是前端展示数据并不想让用户看到这样的数据形式。
后来谷歌加百度搜索了一圈如何解决这个问题,发现了一个比较简单且骚气的操作,大概思路是这样:
将其转换为字符串并判断转换的结果中有没有减号(科学技术法e后面的"-"),如果有的话先把转换出的值加1,变成1.xxxxxxxx,再从索引值为1的地方取值变成.xxxxxxx,最后在将"0"与值拼接起来。代码如下:
const a = 0.00000001;
let result = String(a);
if (result.indexOf('-') >= 0) {
result = '0' + String(Number(result) + 1).substr(1);
}
console.log(result);
输出结果:
menu.saveimg.savepath20180831182156.jpg
网友评论