代码之家  ›  专栏  ›  技术社区  ›  Ace

如何在javascript中舍入数字?

  •  65
  • Ace  · 技术社区  · 17 年前

    在处理一个项目时,我遇到了一个由前雇员创建的JS脚本,它基本上以

    Name : Value
    Name2 : Value2
    

    等。

    Peoblem是指值有时可以是浮点数(精度不同)、整数,甚至是形式。 2.20011E+17 . 我想输出的是纯整数。不过,我不太了解javascript。我该如何编写一个方法,让它们有时浮起来,并使它们成为整数?

    8 回复  |  直到 11 年前
        1
  •  51
  •   aemkei    17 年前

    您必须将输入转换为数字,然后对其进行四舍五入:

    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
    
        2
  •  103
  •   Raj Rao    17 年前

    如果需要四舍五入到某个数字,请使用以下函数

    function roundNumber(number, digits) {
                var multiple = Math.pow(10, digits);
                var rndedNum = Math.round(number * multiple) / multiple;
                return rndedNum;
            }
    
        3
  •  29
  •   Pablo Cabrera    17 年前

    根据 ECMAScript specification ,javascript中的数字仅由双精度64位格式IEEE754表示。因此,在JavaScript中没有真正的整数类型。

    关于这些数字的四舍五入,有许多方法可以实现这一点。这个 Math 对象提供了三种我们可以使用的舍入方法:

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

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

    Ps.:有 第二号论证 数学循环() 方法。这个 FuxId() 非特定的 它的 within ECMAScript规范

        4
  •  25
  •   Maxime Pacary    13 年前

    这是一种可以使用的方法 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
  •  20
  •   Simon Dugré Metin Atalay    14 年前

    您也可以使用 toFixed(x) toPrecision(x) 哪里 X 是位数。

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

        6
  •  15
  •   Aron Rotteveel    17 年前

    你可以使用 Math.round() 用于将数字四舍五入为最接近的整数。

    Math.round(532.24) => 532
    

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

        7
  •  0
  •   user2768720    12 年前

    一个很好的近似值:

    function Rounding (number, precision){
    
    var newNumber;
    var sNumber = number.toString();
    
    var increase = precision + sNumber.length - sNumber.indexOf('.') + 1;
    
    if (number < 0)
      newNumber = (number -  5 * Math.pow(10,-increase));
    else
      newNumber = (number +  5 * Math.pow(10,-increase));
    
    var multiple = Math.pow(10,precision);
    
    return Math.round(newNumber * multiple)/multiple;
    }
    

    只有在某些情况下,当数字的小数部分的长度很长时,它才是不正确的。

        8
  •  -1
  •   Praveen    12 年前

    math.floor(19.5)=19也可以。