【完全版】文字列を数値に変換する方法: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爆速講座