【初心者向け】JavaScriptで値が安全な整数かどうか判定する方法|Number.isSafeInteger()の使い方
安全な整数(Safe Integer)とは?
「安全な整数」とは、IEEE-754 倍精度浮動小数点数として正確に表現できる整数のことを指します。具体的には、次の範囲の整数が該当します。
- 最大値:253 − 1(= 9,007,199,254,740,991)
- 最小値:−(253 − 1)(= −9,007,199,254,740,991)
この範囲を超える整数は、一部の値が正確に表現できなくなり、演算結果に誤差が生じる可能性があります。そのため、厳密な数値処理を行う場合には、対象の値が安全な整数であるかを事前に確認することが重要です。
Number.isSafeInteger() メソッドの使い方
JavaScriptでは、Number.isSafeInteger() メソッドを使用することで、ある値が安全な整数であるかどうかを簡単に判定できます。
- 引数が安全な整数の場合 →
trueを返す - それ以外の場合 →
falseを返す
文字列や真偽値など、整数以外の型が渡された場合も false が返される点に注意してください。
コード例
以下のコードを実行すると、さまざまな値に対して安全な整数かどうかの判定結果を確認できます。
<!DOCTYPE html>
<html>
<body>
<script>
document.write("Checking for Safe Integer...");
document.write("<br>"+Number.isSafeInteger(765));
document.write("<br>"+Number.isSafeInteger(-765));
document.write("<br>"+Number.isSafeInteger('765'));
document.write("<br>"+Number.isSafeInteger(false));
document.write(Number.isSafeInteger(Math.pow(2, 53) - 1));
</script>
</body>
</html>実行結果の解説
Number.isSafeInteger(765)→ true:正の通常の整数は安全な整数です。Number.isSafeInteger(-765)→ true:負の整数も範囲内であれば安全な整数です。Number.isSafeInteger('765')→ false:文字列型のため、数値であっても判定されません。Number.isSafeInteger(false)→ false:真偽値は整数ではないためfalseになります。Number.isSafeInteger(Math.pow(2, 53) - 1)→ true:安全な整数の上限値ちょうどの値です。
補足:Number.MAX_SAFE_INTEGER 定数
安全な整数の上限値は、Number.MAX_SAFE_INTEGER という組み込み定数でも取得できます。同様に下限値は Number.MIN_SAFE_INTEGER で参照可能です。マジックナンバーを直接書く代わりにこれらの定数を利用すると、より可読性の高いコードになります。
-
JavaScriptでボタンがクリックされたかどうかを判定する方法
JavaScriptを使えば、ボタンがクリックされたかどうかを簡単に判定できます。最も一般的な方法は、addEventListener()メソッドでクリックイベントを監視することです。以下に、ボタンのクリックを検出し、クリックされた回数を画面に表示するサンプルコードを紹介します。 サンプルコード <!DOCTYPE html> <html lang=en> <head> <meta charset=UTF-8 /> <meta name=viewport content=width=device-width, initial-scale=1
-
C#でスレッドがバックグラウンドスレッドかどうかを確認する方法
C#では、スレッドがバックグラウンドスレッドであるかどうかを確認するには、IsBackgroundプロパティを使用します。このプロパティは読み書き可能で、値を設定することでスレッドをバックグラウンドスレッドとして動作させることもできます。なお、新しく作成したスレッドは既定でフォアグラウンドスレッドになります。フォアグラウンドスレッドは処理が完了するまでアプリケーション(プロセス)の終了を防ぎますが、バックグラウンドスレッドはすべてのフォアグラウンドスレッドが終了すると強制的に停止されます。例1:IsBackgroundプロパティで確認するまず、IsBackgroundプロパティを使ってスレッド