JavaScriptで数値を反転する方法|負の数の符号を保持しながら桁を逆順にする
課題
今回は、数値を引数として受け取り、その桁を逆順に並べ替えた数値を返すJavaScript関数を作成します。
実装時に注意すべき重要なポイントがあります。それは元の数値の符号を保持することです。つまり、負の数を反転させた場合でも、結果は必ず負の数のまま返されなければなりません。
コード例
以下がその実装コードです。
const num = -224;
function reverseNumber(n) {
let x = Math.abs(n);
let y = 0;
while (x > 0) {
y = y * 10 + (x % 10);
x = Math.floor(x / 10);
}
return Math.sign(n) * y;
}
console.log(reverseNumber(num));出力結果
-422
仕組みの解説
この関数がどのように動作しているのか、処理の流れを順番に見ていきましょう。
- Math.abs(n):まず絶対値を取得することで、符号の影響を受けずに純粋な桁の操作だけを行えるようにしています。
- x % 10:剰余演算により、現在の最下位の桁(1の位)を1桁ずつ取り出します。
- y = y * 10 + (x % 10):取り出した桁を、これまでに構築した数値の末尾に追加していくことで、桁を逆順に組み立てています。
- Math.floor(x / 10):整数除算により、処理が完了した最下位の桁を切り捨てて除去します。
- Math.sign(n):最後に元の数値の符号(+1 または -1)を掛けることで、入力時の符号を正確に復元しています。
この方法を使えば、-224のような負の数も、符号を失うことなく-422へと正しく反転できます。ループは数値の桁数分しか回らないため、計算量はO(d)(dは桁数)と非常に効率的です。
-
JavaScriptで正と負の無限大(Infinity)の値を出力する方法
JavaScriptで扱える数値には上限があり、その範囲を超えた演算結果は特別な値「Infinity」(正の無限大)または「-Infinity」(負の無限大)として出力されます。この記事では、実際に正と負の無限大の値を画面に出力するサンプルコードを紹介します。 JavaScriptにおける無限大(Infinity)とは JavaScriptの数値型はIEEE 754で定められた倍精度浮動小数点数で、表現できる最大値は Number.MAX_VALUE(約1.79×10308)です。演算結果がこの最大値を超えると、エラーにはならずグローバルプロパティの Infinity が返されます。 正の方
-
JavaScriptで数値を丸める・切り捨てる方法|Math.round()とMath.trunc()の違いと使い方
JavaScriptには、小数を整数へ変換するためのメソッドとして、Math.round() と Math.trunc() の2つが標準で用意されています。Math.round():小数点以下を四捨五入し、最も近い整数に丸めます。例えば「3.5」は「4」に、「3.4」は「3」になります。Math.trunc():小数点以下を単純に取り除き、整数部分だけを残します。「3.9」も「3.1」もどちらも「3」になります。それぞれの特徴を踏まえながら、実際のコード例を見ていきましょう。Math.round() と Math.trunc() の違いメソッド動作例(3.999)Math.round()四捨五