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'是做什么的。
答案 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)