JavaScriptで組み込み関数を使わずに数値を文字列へ変換する方法
問題
数値 n を引数として受け取り、それを対応する文字列に変換して返す JavaScript 関数を記述します。ただし、組み込み関数である String() や toString() を使用することは禁止されており、さらに文字列連結(+ 演算子による結合)も使えないという制約が課されています。
アプローチの考え方
この問題を解く鍵となるのは、数値の各桁を一つずつ取り出して処理するという発想です。具体的には以下の手順で行います。
まず、10 で割った余りを求めることで、数値の一番下の桁(一の位)を取得します。次に、Math.floor() を使って数値を 10 で割り、処理済みの桁を切り捨てます。この操作を数値が 0 になるまで繰り返すことで、すべての桁を順番に取り出すことができます。
ここで重要なのは、余り演算の結果(0〜9 の整数)と文字列を連結すると、JavaScript の型強制(暗黙的な型変換)によって自動的に文字列になるという仕様を利用している点です。+ res という形で既存の文字列の先頭に新しい桁を追加していくことで、正しい桁順の文字列を構築しています。
コード例
以下が実際のコードです −
const num = 235456;
const convertToString = (num) => {
let res = '';
while(num){
res = (num % 10) + res;
num = Math.floor(num / 10);
};
return res;
};
console.log(convertToString(num));
コードの解説
num % 10: 現在の数値の一の位の数字を取り出します。例えば 235456 % 10 は 6 になります。(num % 10) + res: 取り出した数字を文字列resの先頭に連結します。これにより、最後に取り出した桁が先頭に来るため、元の数値と同じ並び順になります。Math.floor(num / 10): 小数点以下を切り捨てることで、処理済みの一の位を除去し、残りの桁だけを次のループに渡します。while(num): 数値が 0 になった時点でループを抜けます。すべての桁を処理し終えたことを意味します。
実行結果
コンソールへの出力は以下の通りです −
235456
出力結果を見ると、数値 235456 がそのまま文字列 "235456" として返されていることが分かります。この手法は負の数や小数には対応していませんが、正の整数を文字列化するシンプルかつ効率的なアプローチとなっています。
-
JavaScriptのNumber()関数とは?使い方とサンプルコードを解説
JavaScriptのNumber()関数は、引数として渡された値やオブジェクトを、それに対応する数値へ変換するための関数です。真偽値や文字列型の数字、さらにはDateオブジェクトなども数値に変換できるため、データ型の変換処理において非常に便利な組み込み関数の一つです。例えば、Number(true)は「1」、Number(false)は「0」を返します。また、数字のみで構成された文字列「149」を渡せば数値の149に変換され、new Date()で生成した日付オブジェクトを渡すと、1970年1月1日からの経過ミリ秒数が返されます。以下に、Number()関数の動作を確認できるサンプルコードを
-
C言語で文字列⇔数値の相互変換を行う方法|sscanf関数とsprintf関数の使い方
はじめにC言語のプログラミングにおいて、「文字列から数値への変換」および「数値から文字列への変換」とは何を意味するのでしょうか?本記事では、標準ライブラリ関数を使った双方向の変換方法を、構文・サンプルコード・実行結果とあわせて解説します。解決策:使用する2つの関数C言語には、この変換を実現するための関数が用意されています。sscanf() ― 文字列を数値に変換するsprintf() ― 数値を文字列に変換する文字列から数値への変換(sscanf)sscanf()関数を使うことで、文字列として格納されたデータを、書式指定子に従って解析し、数値として各変数に読み込むことができます。scanf()