IT戦記

プログラミング、起業などについて書いているプログラマーのブログです😚

10 なら 10、 11 なら 20 になる関数を作りたい

以下のエントリで質問を頂いたので

http://d.hatena.ne.jp/amachang/20080827/1219815788

以下のコード

x + a - (x % a || a)

やりたいこと

a で x を丸めること

こんな感じ

function round(a) {
  return function(x) {
    return x + a - (x % a || a);
  }
}

var round10 = round(10);

round10(10); // 10
round10(15); // 20
round10(20); // 20
round10(25); // 30

もっといい方法あるかなあ

(function(b) { return b ? x - b : x; })(x % a)

うーん
どっちにしろ奇麗には書けないなあ