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

时间:2015-03-03 19:24:02

标签: javascript function rounding encryption

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的开头添加“+”符号产生任何差异感到困惑。

我理解功能的基础;小数被移动到右边的位置(由e + 2指定),用这个新整数四舍五入,然后移回。但是,我不确定在这种情况下'e'是做什么的。

2 个答案:

答案 0 :(得分:2)

eX是数字文字的有效部分,表示*10^X,就像在scientific notation中一样:

> 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 Guide

但当然,在你的例子中使用这种符号的方式是可怕的。将值来回转换为数字和字符串已经足够糟糕了,但这也使得理解起来更加困难。

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

答案 1 :(得分:1)

单个加号运算符将字符串强制转换为浮点数。 (另见:Single plus operator in javascript