有人可以详细解释这个 JavaScript 十进制舍入函数吗?

Can someone please explain this JavaScript decimal rounding function in detail?

本文关键字:十进制 JavaScript 舍入 函数 解释      更新时间:2023-09-26
function Round2DecimalPlaces(l_amt) {
    var l_dblRounded = +(Math.round(l_amt + "e+2") + "e-2");
    return l_dblRounded;
}

小提琴:http://jsfiddle.net/1jf3ut3v/

我主要对Math.round如何

与"e+2"一起工作以及将"+"号添加到Math.round的开头如何产生任何影响感到困惑。

我了解该函数的基本原理;小数点向右移动n位(由e + 2指定(,用这个新整数四舍五入,然后移回。 但是,我不确定"e"在这种情况下在做什么。

>eX是数字文字的有效部分,表示*10^X,就像科学记数法一样:

> 1e1 // 1 * Math.pow(10, 1)
10
> 1e2 // 1 * Math.pow(10, 2)
100

因此,转换包含此类字符序列的字符串会产生有效数字:

> var x = 2;
> Number(x + "e1")
20
> Number(x + "e2")
200

有关更多信息,请查看 MDN JavaScript 指南。

但是,当然,在您的示例中使用此符号的方式是可怕的。 将值来回转换为数字和字符串已经够糟糕的了,但它也使它更难以理解。

简单倍数或除以 10 的倍数。

单加号运算符将字符串强制转换为浮点数。(另请参阅: javascript 中的单加号运算符(