JavaScript/Math/sqrt
< JavaScript | Math
Math.sqrt(x)は引数xの平方根を返します[1]。
- 引数xが負の値の場合、NaNを返します。
- 引数xがNaN,+0,-0[2]あるいはInfinityの場合、引数xを返します。
例
編集- 直角三角形の斜辺の長さを求めるプログラム
const f = p => { for (;;) { a = prompt(`${p}は何cmですか?`); if (!isNaN(a) && a > 0) return a; alert(`${p}に、入力ミスがあります。 "${a}"`); } } for (;;) { const a = f("縦の辺の長さ"); const b = f("横の辺の長さ"); const sqrt = Math.sqrt(a ** 2 + b ** 2) if (sqrt !== Infinity) { alert(`縦の辺の長さ${a}cm、横の辺の長さ${b}cmならば、\n斜辺の長さは${sqrt.toFixed(3)}cmです。`); break; } alert("入力が大きすぎます。"); }
- このプログラムでは Math.sqrt の説明のため sqrt = Math.sqrt(a ** 2 + b ** 2) で斜辺の長さを求めていますが、自乗を行うとオーバーフローあるいはアンダーフローの恐れがあるので、本来は斜辺を求めるのならば、自乗和の平方根を返すメソッド Math.hypot を使うべきです。
- Math.hypot は、より高い精度の内部表現を使いオーバーフローやアンダーフローの心配はありません。
- 解説
(斜辺の長さ)2 = (縦の辺の長さ)2 + (横の辺の長さ)2
という関係が成り立っています。これを三平方の定理またはピタゴラスの定理といいます。