少しばかり単位の話なぞをしてみよう

個人的に比較的によく悩むのです、これ。似た話は何度かしてる気はする。

METAR/SPECI 解析からの一連のハナシなんだけれどもね、たとえば:

a scattered layer of towering cumulus at 1,500 feet would be coded “SCT015TCU”

だと言う。すなわち、「1500」を百で割った値をコード化している、て意味である。なの? ほんとですか?

違うんだよね、本当は。これはどう?

「50万円ばかり儲けた」≠「丁度ぴったり500000円儲けた」

これならわかるよね。「万円」で議論してるってことは、それ未満の桁には「興味がない」ということを、暗黙に主張しとるわけだ。

つまり「1500[ft]を100で割った値をコード化している」のではなくて、「15[100ft]をコード化している」のね。ところが無条件に「15[100ft] == 1500[ft]」だと解釈して読み替えてしまうと、この「100ft未満には意味がない」という情報を失ってしまう。ので、知識がない人が読みかえ後の値を読み取ると、「a scattered layer of towering cumulus」のレポートが「1552feet」とかの精度で行われ得る、と思いかねない。

何よりも精度が問題(良い悪いではなくどんな精度であるのかがわかる必要があるという意味)であり、なおかつ、データのやりとりをあくまでもバイナリで扱うような、いわゆるセンサーのようなハードウェアのデータの扱いなんかではこのことが非常に注意深く設計されていて、設計書に「LSB」を書く欄があったりする。ちょっと一般に言う LSB とは違った意味かもしんない。「最下位ビット」の意味ではなくて、「最下位ビットで示せる値」。同じなんだけどね。つまり、「LSB=1000円」とした場合、「1」=「1000円」。言わずもがな、「1千円 exactly equals 1000円」ではない。「LSB=1000円」とした以上は、円に換算したあとも、最低でも脳内で百の位までを無視しなければならない。

そう考えてくるとね、「SCT015TCU」を人間可読にする際、「value=int(1500), unit=”ft”」と言うのではなくて、「value=int(15), unit=”100ft”」と言ってあげた方が、誰に対しても親切なんだろうなー、と思ったのでした。ま、結局言いたかったのはこれだけなんだけどね。