Home JavaScript Greasemonkey PHP

「数値単位変換」ツール、リリース2011-01-21


1ミリオンは何万?1ビリオンは何億?

英語で数字を表現する時、当然の事ながら「万」「億」「兆」という単位は使わず、「ミリオン」「ビリオン」などの単位を使いますが、日本語では 4 桁で数字を区切って表現するのに対し、英語では 3 桁で区切って表現します。
会計などで金額を扱う際、カンマを打つ時も 3 桁ごとです。
メモリや HDD の容量でおなじみの SI 単位系も、「キロ」「メガ」「ギガ」と、103 区切りです。

これが慣れない。どうしても直感的に変換できない。というかそもそも「直感的」な話ではないですね。
必要になる度に、毎回数字にばらして、桁を数えて…などとしてました。
ですが、いい加減面倒になったので、数値単位変換 っていうツールを作りました。

「1ミリオン→100万」も、「1兆→1トリリオン」も思いのままに変換できます。
同じ悩みのある諸氏は是非ご活用下さい!

技術的な話

とりあえず大きな数を扱うから BigInt だな、という話なんですが、BigInt 同士の演算とか特に不要でしたし、ツールのキモになるのはむしろ「1兆」=「1,000,000,000,000」というパーサ部分だったので、既存の BigInt ライブラリは特に使わず、独自に実装する事にしました。
効率よりもわかりやすさ重視で、パースしやすいデータ構造を持たせた感じです。

で、肝心のパーサなんですがこれがなかなか大変でした。

「千」だけでも「1,000」ですが、「一千」と書いても「1,000」ですね。
「千百十万」も「1110万」も同じ「11,100,000」です。
さらに、英語の「eleven」はその 1 単語で 2 桁分の「11」を表したりします。

そんなこんなの難問を解決した結果、「1ミリオン」でも「100G」でも「10000000000000000」でも「999億9万9000」でも「壱億弐仟参佰泗拾伍萬陸仟漆佰捌拾玖」でも「fifteen millions and four thousands three hundreds twenty one」でも、正しくパースできるようになりました。

もはや当初の目的を超えて作り込んでしまった感じですが、面白かったので良しとしましょう。

カテゴリ: Development タグ: javascript