【完全版】文字列を数値に変換する方法:JavaScript/Python実装例
プログラミングにおいて、文字列として受け取ったデータを数値として処理したい場面は非常に多いです。この記事では、JavaScriptとPythonで文字列を数値に変換する様々な方法とその注意点を解説します。
JavaScript での文字列から数値への変換
parseInt() – 整数変換
console.log(parseInt("123")); // 123
console.log(parseInt("123.45")); // 123(小数点以下切り捨て)
console.log(parseInt("123abc")); // 123(無効文字は無視)
console.log(parseInt("abc123")); // NaN
parseFloat() – 浮動小数点変換
console.log(parseFloat("123.45")); // 123.45
console.log(parseFloat("123")); // 123
console.log(parseFloat("123.45abc")); // 123.45
console.log(parseFloat("abc123")); // NaN
Number() – 厳密な変換
console.log(Number("123")); // 123
console.log(Number("123.45")); // 123.45
console.log(Number("123abc")); // NaN(厳密チェック)
console.log(Number("")); // 0
console.log(Number(" ")); // 0
単項プラス演算子
console.log(+"123"); // 123
console.log(+"123.45"); // 123.45
console.log(+"123abc"); // NaN
Python での文字列から数値への変換
int() – 整数変換
print(int("123")) # 123
print(int("123.45")) # エラー(小数点があるとエラー)
print(int(float("123.45"))) # 123(float経由で変換)
float() – 浮動小数点変換
print(float("123")) # 123.0
print(float("123.45")) # 123.45
print(float("1.23e-4")) # 0.000123(科学的記数法も対応)
安全な変換関数の実装
JavaScript版
function safeParseInt(str) {
const result = parseInt(str);
return isNaN(result) ? null : result;
}
function safeParseFloat(str) {
const result = parseFloat(str);
return isNaN(result) ? null : result;
}
function isValidNumber(str) {
return !isNaN(str) && !isNaN(parseFloat(str));
}
Python版
def safe_int(s):
try:
return int(s)
except (ValueError, TypeError):
return None
def safe_float(s):
try:
return float(s)
except (ValueError, TypeError):
return None
def is_valid_number(s):
try:
float(s)
return True
except (ValueError, TypeError):
return False
特殊ケースの処理
空文字・空白文字の処理
// JavaScript
console.log(Number("")); // 0
console.log(Number(" ")); // 0
console.log(parseInt("")); // NaN
console.log(parseFloat("")); // NaN
# Python
print(int("")) # ValueError
print(float("")) # ValueError
print(float(" ")) # ValueError(空白もエラー)
符号付き数値
// JavaScript
console.log(parseInt("+123")); // 123
console.log(parseInt("-123")); // -123
console.log(parseFloat("+123.45")); // 123.45
# Python
print(int("+123")) # 123
print(int("-123")) # -123
print(float("+123.45")) # 123.45
進数を指定した変換
JavaScript
console.log(parseInt("1010", 2)); // 10(2進数)
console.log(parseInt("77", 8)); // 63(8進数)
console.log(parseInt("ff", 16)); // 255(16進数)
Python
print(int("1010", 2)) # 10(2進数)
print(int("77", 8)) # 63(8進数)
print(int("ff", 16)) # 255(16進数)
バリデーション付き変換クラス
JavaScript版
class NumberConverter {
static toInt(str) {
if (typeof str !== 'string') return null;
const num = parseInt(str);
return isNaN(num) ? null : num;
}
static toFloat(str) {
if (typeof str !== 'string') return null;
const num = parseFloat(str);
return isNaN(num) ? null : num;
}
}
Python版
class NumberConverter:
@staticmethod
def to_int(s):
if not isinstance(s, str):
return None
try:
return int(s)
except ValueError:
return None
@staticmethod
def to_float(s):
if not isinstance(s, str):
return None
try:
return float(s)
except ValueError:
return None
まとめ
文字列から数値への変換は、各言語で複数の方法が用意されています。用途に応じて適切な関数を選択し、エラーハンドリングを含めた実装を心がけることで、堅牢なプログラムが作成できます。特に、ユーザー入力を扱う場合は、必ずバリデーションを行いましょう。
■プロンプトだけでオリジナルアプリを開発・公開してみた!!
■AI時代の第一歩!「AI駆動開発コース」はじめました!
テックジム東京本校で先行開始。
■テックジム東京本校
「武田塾」のプログラミング版といえば「テックジム」。
講義動画なし、教科書なし。「進捗管理とコーチング」で効率学習。
より早く、より安く、しかも対面型のプログラミングスクールです。
<短期講習>5日で5万円の「Pythonミニキャンプ」開催中。
<月1開催>放送作家による映像ディレクター養成講座
<オンライン無料>ゼロから始めるPython爆速講座


