デフォルトでは、bcはすべてのアルファベット文字を9として解釈します。

デフォルトでは、bcはすべてのアルファベット文字を9として解釈します。

システム:

  • Ubuntu 22.04.3 LTS
  • GNU bash、バージョン 5.1.16(1)-リリース(x86_64-pc-linux-gnu)
  • 紀元前1.07.1

観察する:

ibaseそして設定されていませんobase

echo "A0" | bc
90
echo "B0" | bc
90
echo "X0" | bc
90

質問:基本的にbcアルファベット文字が9sと解釈されるのはなぜですか?ここでエラーメッセージを表示する方が悪いのはなぜですか?

答え1

man bcGNUシステム(GNU bc1.07以降)から:

単純な式は定数だけです。bc変数で指定された現在の入力基数を使用して定数を内部10進数に変換しますibase。 (関数に例外があります。)の有効な値はibase2〜36です。 (16より大きいベースは拡張です。)
この範囲外の値をibase2または36個の結果値に割り当てます。入力番号には0~9文字とAZ文字を含めることができます。 (注:大文字でなければなりません。小文字は変数名です。)の値に関係なく、単位番号は常にその数値の値を持ちますibase。 (つまり、A = 10.)複数桁、値以上のすべてのbc入力数を変更します。これにより、数字は常に入力ベースで最大3桁の数字になります。ibaseibase-1ZZZ

(強調します。)

関連情報