65

プロジェクトに取り組んでいるときに、元従業員によって作成された、基本的に次の形式でレポートを作成する JS スクリプトに出くわしました。

Name : Value
Name2 : Value2

問題は、値が浮動小数点数 (精度が異なる)、整数、または の形式である場合があること2.20011E+17です。出力したいのは純粋な整数です。ただし、JavaScript についてはよくわかりません。これらの時々フロートを取り、それらを整数にするメソッドを書くにはどうすればよいでしょうか?

4

8 に答える 8

103

特定の桁数に丸める必要がある場合は、次の関数を使用してください

function roundNumber(number, digits) {
            var multiple = Math.pow(10, digits);
            var rndedNum = Math.round(number * multiple) / multiple;
            return rndedNum;
        }
于 2009-01-25T22:40:38.377 に答える
51

入力を数値に変換してから丸める必要があります。

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
于 2008-10-29T11:23:00.163 に答える
30

ECMAScript 仕様によると、JavaScript の数値は倍精度 64 ビット形式の IEEE 754 でのみ表現されます。したがって、JavaScript には実際には整数型はありません。

これらの数値の丸めに関しては、これを実現する方法がいくつかあります。Mathオブジェクトは、使用できる 3 つの丸め方法を提供します。

Math.round ()が最も一般的に使用され、最も近い整数に丸められた値を返します。次に、数値以下の最大の整数を返すMath.floor()があります。最後に、数値以上の最小の整数を返すMath.ceil()関数があります。

固定小数点表記を使用して数値を表す文字列を返すtoFixed()もあります。

追伸: Math.round()メソッドには第 2 引数がありません。toFixed ()IE 固有ではなく、ECMAScript 仕様にも含まれています。

于 2008-10-29T10:46:39.677 に答える
25

Math.round()2 番目の引数 (丸めの小数点以下の桁数)を使用できるようにする方法を次に示します。

// '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
于 2012-05-04T16:53:48.853 に答える
20

toFixed(x)またはを使用することもできます。toPrecision(x)ここで、xは桁数です。

これらの方法は両方とも、すべての主要なブラウザでサポートされています

于 2012-05-07T09:59:48.743 に答える
16

Math.round()を使用して、数値を最も近い整数に丸めることができます。

Math.round(532.24) => 532

また、parseInt()parseFloat()を使用して、変数を特定の型 (この場合は整数と浮動小数点) にキャストできます。

于 2008-10-29T09:19:50.897 に答える
-1

Math.floor(19.5) = 19 も機能するはずです。

于 2014-05-15T22:56:10.503 に答える