在处理项目时,我遇到了一个由前员工创建的JS脚本,该脚本基本上以一种形式创建了一个报告
Name : Value Name2 : Value2
等等
问题是这些值有时可能是浮点数(具有不同的精度),整数,甚至是形式2.20011E+17
.我想输出的是纯整数.不过,我不太了解很多JavaScript.我将如何编写一个有时采用浮点数并使它们成为整数的方法?
如果需要舍入到一定数量的数字,请使用以下功能
function roundNumber(number, digits) { var multiple = Math.pow(10, digits); var rndedNum = Math.round(number * multiple) / multiple; return rndedNum; }
您可以将输入转换为数字然后围绕它们:
function toInteger(number){ return Math.round( // round to nearest integer Number(number) // type cast your input ); };
或者作为一个班轮:
function toInt(n){ return Math.round(Number(n)); };
使用不同值进行测试:
toInteger(2.5); // 3 toInteger(1000); // 1000 toInteger("12345.12345"); // 12345 toInteger("2.20011E+17"); // 220011000000000000
根据ECMAScript规范,JavaScript中的数字仅由双精度64位格式IEEE 754表示.因此,JavaScript中没有真正的整数类型.
关于这些数字的四舍五入,有很多方法可以实现这一目标.该数学对象为我们提供了三个舍入法至极,我们可以使用:
所述Math.round()是最常用的,它返回四舍五入为最接近的整数的值.然后是Math.floor(),它返回小于或等于数字的最大整数.最后,我们有Math.ceil()函数,它返回大于或等于数字的最小整数.
还有toFixed()返回表示使用定点表示法的数字的字符串.
PS:有没有第二个参数在Math.round()方法.的toFixed()是不特定IE,其内 ECMAScript规范藏汉
这是一种能够Math.round()
与第二个参数一起使用的方法(舍入的小数位数):
// 'improve' Math.round() to support a second argument var _round = Math.round; Math.round = function(number, decimals /* optional, default 0 */) { if (arguments.length == 1) return _round(number); var multiplier = Math.pow(10, decimals); return _round(number * multiplier) / multiplier; } // examples Math.round('123.4567', 2); // => 123.46 Math.round('123.4567'); // => 123
您也可以使用toFixed(x)
或toPrecision(x)
其中x是数字位数.
所有主流浏览器都支持这两种方法
您可以使用Math.round()将数字舍入为最接近的整数.
Math.round(532.24) => 532
此外,您可以使用parseInt()和parseFloat()将变量强制转换为某种类型,在本例中为整数和浮点.