JavaScript/Math/sign
Math.sign(x)
は、引数 x
の符号を返します。これは、x
が正の数か負の数か、またはゼロかを示します[1]。
- 引数
x
がNaN
の場合、NaN
を返します。 - 引数
x
が+0
の場合、+0
を返します。 - 引数
x
が-0
の場合、-0
を返します。 - 引数
x
が正の数の場合、1
を返します。 - 引数
x
が負の数の場合、-1
を返します。 - 引数
x
がInfinity
の場合、1
を返します。 - 引数
x
が-Infinity
の場合、-1
を返します。
例
符号を判定するプログラム
以下のプログラムは、ユーザーが入力した値の符号を判定します。
const f = p => { for (;;) { a = prompt(`${p}は何ですか?`); if (!isNaN(a)) return a; alert(`${p}に、入力ミスがあります。 "${a}"`); } } for (;;) { const x = f("値"); const sign = Math.sign(x); if (!isNaN(sign)) { alert(`${x} の符号は ${sign} です。`); break; } alert("入力が大きすぎます。"); }
このプログラムでは、Math.sign
を使用して値の符号を判定しています。ユーザーが入力した値が NaN
や Infinity
の場合、適切に処理されます。
符号関数のグラフを描画するプログラム
以下のプログラムは、符号関数のグラフを描画します。
const canvas = document.createElement('canvas'); document.body.appendChild(canvas); const ctx = canvas.getContext('2d'); canvas.width = 800; canvas.height = 400; const xScale = canvas.width / 10; const yScale = canvas.height / 2; ctx.beginPath(); ctx.moveTo(0, canvas.height / 2); for (let x = -5; x <= 5; x += 0.1) { const y = Math.sign(x); const canvasX = (x + 5) * xScale; const canvasY = canvas.height / 2 - y * yScale; ctx.lineTo(canvasX, canvasY); } ctx.strokeStyle = 'blue'; ctx.lineWidth = 2; ctx.stroke();
このプログラムでは、Math.sign
を使用して符号関数のグラフを描画しています。xScale
と yScale
は、グラフのスケーリングを調整するための変数です。
注意点
- 戻り値の範囲:
Math.sign
の戻り値は、-1
、0
、1
、NaN
のいずれかです。 - 精度: 浮動小数点演算の特性上、
Math.sign
の結果には微小な誤差が含まれることがあります。
脚註
- ↑ これは、数学的には
x
の符号関数として定義されます。