在做一个项目时,我遇到了一个由前员工创建的 JS 脚本,它基本上以以下形式创建了一个报告
Name : Value
Name2 : Value2
等等。
问题是这些值有时可以是浮点数(具有不同的精度)、整数,甚至是2.20011E+17
. 我想输出的是纯整数。不过,我对 JavaScript 了解不多。我将如何编写一个接受这些有时浮点数并使它们成为整数的方法?
在做一个项目时,我遇到了一个由前员工创建的 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是位数。
所有主要浏览器都支持这两种方法