70

私が書いているスクリプトでは、丸められた数値を表示する必要がありますが、小数点以下は表示しません。四捨五入して3位にしましたが、JavaScriptにsubstrPHPのような機能がないように見えるので、小数点以下をすべて削除する方法がわかりません。

推奨事項はありますか?

4

6 に答える 6

134

string がある場合は、整数として解析します。

var num = '20.536';
var result = parseInt(num, 10);  // 20

numberがある場合、ECMAScript 6 はMath.trunc完全に一貫した切り捨てを提供します。これは Firefox 24+ および Edge で既に利用可能です:

var num = -2147483649.536;
var result = Math.trunc(num);  // -2147483649

それに頼ることができず、常に正の数になる場合は、もちろん次のように使用できますMath.floor

var num = 20.536;
var result = Math.floor(num);  // 20

最後に、[−2147483648, 2147483647] に数値がある場合、任意のビット演算子を使用して 32 ビットに切り捨てることができます。| 0は一般的であり>>> 0、符号なし 32 ビット整数を取得するために使用できます。

var num = -20.536;
var result = num | 0;  // -20
于 2012-04-14T00:04:37.307 に答える
18

trunc2JavaScript が科学表記法で非常に小さいまたは非常に大きい浮動小数点数を表す方法を考慮すると、Mozey の関数に沿った Travis Pessetto の回答が唯一の正解でした。

たとえば、parseInt(-2.2043642353916286e-15)その入力を正しく解析しません。を返す代わりに、0を返し-2ます。

これは正しい(そして最も狂気のない)方法です:

function truncate(number)
{
    return number > 0
         ? Math.floor(number)
         : Math.ceil(number);
}
于 2014-08-11T06:23:17.700 に答える
15

ここに私のソリューションを追加します。値が 0 より大きい場合は floor を、ゼロより小さい場合は ceil を使用できます。

function truncateToInt(x)
{
    if(x > 0)
    {
         return Math.floor(x);
    }
    else
    {
         return Math.ceil(x);
    }
 }

それで:

y = truncateToInt(2.9999); // results in 2
y = truncateToInt(-3.118); //results in -3

注意:この回答は、Math.trunc(x)かなり新しく、多くのブラウザーでサポートされていないときに書かれました。現在、最新のブラウザはMath.trunc(x).

于 2014-05-27T19:21:45.980 に答える
1

使用Math.floor():

var f = 20.536;
var i = Math.floor(f);  // 20

http://jsfiddle.net/J4UVV/1/

于 2012-04-14T00:13:19.803 に答える