Panda Noir

JavaScript の限界を究めるブログです。

数詞をつける関数をつくりました。

数詞っていうのは万とか億とかああいうやつのことです。

どんな関数なの?

数値を渡すと1234億5678万9012という値を返します。ただ、Javascriptでは詳しくは調べてませんがビットの関係なのか、京(億のひとつ上)より上の数値を渡すと正しく処理できなくなります。だから、文字列を渡してそれを処理する形としました。

var number=function(number){
    var info={
        "無量大数":number.slice(-72,-68)||0,
        "不可思議":number.slice(-68,-64)||0,
        "那由他":number.slice(-64,-60)||0,
        "阿僧祇":number.slice(-60,-56)||0,
        "恒河沙":number.slice(-56,-52)||0,
        "極":number.slice(-52,-48)||0,
        "載":number.slice(-48,-44)||0,
        "正":number.slice(-44,-40)||0,
        "澗":number.slice(-40,-36)||0,
        "溝":number.slice(-36,-32)||0,
        "穣":number.slice(-32,-28)||0,
        "𥝱":number.slice(-28,-24)||0,
        "秭":number.slice(-28,-24)||0,
        "垓":number.slice(-24,-20)||0,
        "京":number.slice(-20,-16)||0,
        "兆":number.slice(-16,-12)||0,
        "億":number.slice(-12,-8)||0,
        "万":number.slice(-8,-4)||0,
        "残り":number.slice(-4)||0,
    }
    var result="";
    for(var key in info){
        if(info[key]>0&&key!="残り") result+=info[key]+key;
    }
    result+=info["残り"];
    return result;
}

使い道

大きすぎてすぐにどの程度かわからないような数字に対してやるといいとおもいます。さきほどPDateのテストをしている際に平成になって何秒たったか計算しました。しかし、値が微妙でどの程度かわかりませんでした。そこでつくりました。ちなみに今はおよそ7億6789万秒くらいらしいです(2013年6月9日15時2分現在)。

終わりに

改めて問題が起きたら別の方法でアプローチをする大切さに気づけました。大切ですね。