努力したWiki

推敲の足りないメモ書き多数

ユーザ用ツール

サイト用ツール


documents:code:code-015

JANコードのチェックディジット計算

JANコード(Japanese Article Number)は、日本で使用されているバーコードの一種で、商品識別に用いられます。JANコードには主に以下の2種類があります:

  • 13桁JANコード(標準コード)
  • 8桁JANコード(短縮コード)

どちらも最後の1桁は「チェックディジット」と呼ばれ、誤入力や読み取りミスを検出するために使われます。

チェックディジットの計算方法

13桁JANコードの場合

チェックディジットは、最初の12桁の数字から以下の手順で計算されます。

手順

  1. 奇数桁(1, 3, 5, …, 11桁目)の数字をすべて足す。
  2. 偶数桁(2, 4, 6, …, 12桁目)の数字をすべて足し、その合計を3倍する。
  3. 手順1と手順2の合計を求める。
  4. 合計を10で割った余りを求める。
  5. 余りが0であればチェックディジットは0。そうでなければ、10から余りを引いた値がチェックディジット。

JANコードの最初の12桁が `490123456789` の場合:

  1. 奇数桁の合計:4 + 0 + 2 + 4 + 6 + 8 = 24
  2. 偶数桁の合計:9 + 1 + 3 + 5 + 7 + 9 = 34 → 34 × 3 = 102
  3. 合計:24 + 102 = 126
  4. 126 ÷ 10 の余りは 6 → 10 - 6 = 4

チェックディジットは「4」 となります。

8桁JANコードの場合

8桁JANコードは、主に小型商品などに使用される短縮版で、最初の7桁からチェックディジットを計算します。計算方法は13桁版と同様です。

手順

  1. 奇数桁(1, 3, 5, 7桁目)の数字をすべて足す。
  2. 偶数桁(2, 4, 6桁目)の数字をすべて足し、その合計を3倍する。
  3. 手順1と手順2の合計を求める。
  4. 合計を10で割った余りを求める。
  5. 余りが0であればチェックディジットは0。そうでなければ、10から余りを引いた値がチェックディジット。

JANコードの最初の7桁が `4901234` の場合:

  1. 奇数桁の合計:4 + 0 + 2 + 4 = 10
  2. 偶数桁の合計:9 + 1 + 3 = 13 → 13 × 3 = 39
  3. 合計:10 + 39 = 49
  4. 49 ÷ 10 の余りは 9 → 10 - 9 = 1

チェックディジットは「1」 となります。

Pythonによるチェックディジット計算サンプル

以下は、JANコードのチェックディジットをPythonで計算するサンプルコードです。

def calculate_jan_check_digit(code: str) -> int:
    """
    JANコードのチェックディジットを計算する関数。
    code: チェックディジットを除いたJANコード(12桁または7桁)
    return: チェックディジット(1桁の整数)
    """
    if len(code) not in [7, 12]:
        raise ValueError("JANコードは7桁または12桁である必要があります。")
 
    digits = [int(d) for d in code]
    odd_sum = sum(digits[::2])
    even_sum = sum(digits[1::2]) * 3
    total = odd_sum + even_sum
    remainder = total % 10
    return 0 if remainder == 0 else 10 - remainder
 
# 使用例
print(calculate_jan_check_digit("490123456789"))  # 出力: 4
print(calculate_jan_check_digit("4901234"))       # 出力: 1

参考文献

記事作成者

この記事は、AIアシスタント Copilot(Microsoft GPT-4) によって生成されました。 k896951が加筆修正を行いました。

documents/code/code-015.txt · 最終更新: by k896951

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki