私が書いているスクリプトでは、丸められた数値を表示する必要がありますが、小数点以下は表示しません。四捨五入して3位にしましたが、JavaScriptにsubstr
PHPのような機能がないように見えるので、小数点以下をすべて削除する方法がわかりません。
推奨事項はありますか?
私が書いているスクリプトでは、丸められた数値を表示する必要がありますが、小数点以下は表示しません。四捨五入して3位にしましたが、JavaScriptにsubstr
PHPのような機能がないように見えるので、小数点以下をすべて削除する方法がわかりません。
推奨事項はありますか?
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
trunc2
JavaScript が科学表記法で非常に小さいまたは非常に大きい浮動小数点数を表す方法を考慮すると、Mozey の関数に沿った Travis Pessetto の回答が唯一の正解でした。
たとえば、parseInt(-2.2043642353916286e-15)
その入力を正しく解析しません。を返す代わりに、0
を返し-2
ます。
これは正しい(そして最も狂気のない)方法です:
function truncate(number)
{
return number > 0
? Math.floor(number)
: Math.ceil(number);
}
ここに私のソリューションを追加します。値が 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)
.