MDN的JavaScript十进制舍入示例说明



我正在学习JavaScript,听说在使用JavaScript的Math.round()和.toFixed()方法时,不同的浏览器之间可能会出现问题。在这个网站上研究后,我看到的批评最少的解决方案是MDN中所示的十进制舍入方法。

仔细查看代码,我对以下部分感到困惑:

function decimalAdjust(type, value, exp) {
// If the exp is undefined or zero...
if (typeof exp === 'undefined' || +exp === 0) {
return Math[type](value);
}
value = +value;
exp = +exp;
// If the value is not a number or the exp is not an integer...
if (isNaN(value) || !(typeof exp === 'number' && exp % 1 === 0)) {
return NaN;
}
// Shift
value = value.toString().split('e');
value = Math[type](+(value[0] + 'e' + (value[1] ? (+value[1] - exp) : -exp)));
// Shift back
value = value.toString().split('e');
return +(value[0] + 'e' + (value[1] ? (+value[1] + exp) : exp));
}

具体地说,我被">value=value.toString().split('e')";,从底部开始出现大约五行。

据我所知,JavaScript正在改变";值";到文本,然后在'e'处拆分。这个"e"是从哪里来的?每当我使用";toString()"方法在诸如11.111之类的浮点上;11.111";。"e"是以某种方式暗示的吗?它和绳子一起存放在什么地方吗?他们真的是说";to指数()"?

提前感谢您的意见,如果这是一个愚蠢的问题,我深表歉意。如果有人有更可靠的解决方案,请随时为我指明正确的方向。

e是科学记数法中的指数符号,当数字真的很大(或很小)时,可以在toString()中得到它。

例如CCD_ 3产生CCD_。

至于你问题的另一部分:

该方法也适用于没有指数部分的情况。在这种情况下,split函数返回一个长度为一的数组,因此value[1]变为undefined,这是错误的。在这种情况下,我们基本上忽略了它

最新更新