今年も残すところあと97%となりました

新年に立てた抱負をしっかり守れている人も、早くも挫折してしまった人も、どうもこんにちは。今年はもう10日も経ってしまいました。早いものですね。


まだまだ1年は長いと思ってぼけっとしてたら、また1年あっという間に終わっちゃうよ? と自分に他人にプレッシャーを掛けるため、今年がどれくらい経過したかをリアルタイムで見せるスクリプトを作ってみました。http://heisei.iq148.com/にインスパイアされてのものでもあります。
http://wwwc.pikara.ne.jp/tomerun/thisyear.html
http://tomerun.info/tool/thisyear/thisyear.html に移動しました


動かしてみたはいいものの、意外と数値の変動が小さくて、期待してたよりも「こんなにどんどん時間が過ぎていってるんだ!」という焦燥感は感じないなぁ。狙いは外れてしまいました。


これ作ってて初めて知ったんですが、JavaScriptには標準では数値を整形する関数が含まれてないんですね。JavaScriptの数値は全て倍精度浮動小数点数なので、そのまま表示したら桁数がすごく多くなってしまって困るのだけど。
というわけで、こんな感じで自作しました。

  // 数値を整数部2桁・小数部7桁のパーセント値文字列に整形
  var NUM_DIGITS = 9;

  var ratio = 今年の経過時間/1年の時間;
  var digits = []; // 上から一桁ずつ数値を格納する
  for(var i = 0; i < NUM_DIGITS; ++i){
    ratio *= 10;
    digits[i] = Math.floor(ratio);
    ratio -= digits[i];
  }
  var percentage = (digits[0] == 0 ? "" : digits[0].toString());
  percentage += digits[1] + ".";
  for(var i = 2; i < NUM_DIGITS; ++i){
    percentage += digits[i];
  }


このようなよく使われそうな処理って、Webアプリフレームワークとかではライブラリ化されてるのかな? よく知らない。