当前位置:  开发笔记 > 编程语言 > 正文

如何在JavaScript中舍入数字?

如何解决《如何在JavaScript中舍入数字?》经验,为你挑选了6个好方法。

在处理项目时,我遇到了一个由前员工创建的JS脚本,该脚本基本上以一种形式创建了一个报告

Name : Value
Name2 : Value2

等等

问题是这些值有时可能是浮点数(具有不同的精度),整数,甚至是形式2.20011E+17.我想输出的是纯整数.不过,我不太了解很多JavaScript.我将如何编写一个有时采用浮点数并使它们成为整数的方法?



1> Raj Rao..:

如果需要舍入到一定数量的数字,请使用以下功能

function roundNumber(number, digits) {
            var multiple = Math.pow(10, digits);
            var rndedNum = Math.round(number * multiple) / multiple;
            return rndedNum;
        }


最好使用在JavaScript 1.5中添加的[`.toFixed()`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number/toFixed).
如果你正在使用lodash你可以[lodash的圆函数](https://lodash.com/docs/4.17.4#round):`_.round(数字,精度)`

2> aemkei..:

您可以将输入转换为数字然后围绕它们:

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


一个班轮与4班轮正好相同:)
实际的单行是'Math.round(number)'.整个铸造业务是不必要的.在JavaScript中,字符串会在需要时自动强制转换为数字.
相反,`Number`函数使用相同的算法将数字转换为强制.该算法(在ECMA-262第3版的9.3.1节中定义)处理各种格式.基本上任何有效数字,包括小数,指数表示法和十六进制.(严重''0xFF'== 255`)

3> Pablo Cabrer..:

根据ECMAScript规范,JavaScript中的数字仅由双精度64位格式IEEE 754表示.因此,JavaScript中没有真正的整数类型.

关于这些数字的四舍五入,有很多方法可以实现这一目标.该数学对象为我们提供了三个舍入法至极,我们可以使用:

所述Math.round()是最常用的,它返回四舍五入为最接近的整数的值.然后是Math.floor(),它返回小于或等于数字的最大整数.最后,我们有Math.ceil()函数,它返回大于或等于数字的最小整数.

还有toFixed()返回表示使用定点表示法的数字的字符串.

PS:有没有第二个参数Math.round()方法.的toFixed()不特定IE,其内 ECMAScript规范藏汉



4> Frosty Z..:

这是一种能够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



5> irfandar..:

您也可以使用toFixed(x)toPrecision(x)其中x是数字位数.

所有主流浏览器都支持这两种方法



6> Aron Rotteve..:

您可以使用Math.round()将数字舍入为最接近的整数.

Math.round(532.24) => 532

此外,您可以使用parseInt()和parseFloat()将变量强制转换为某种类型,在本例中为整数和浮点.


Math.round()没有第二个参数,因为它将数字四舍五入为最接近的整数.
推荐阅读
贾志军
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有