angularjsで金額を扱う場合、currencyという、金額表示用に整形するフィルタがある。このcurrencyフィルタはロケールを日本にしていようが、問答無用で小数点以下二桁まで表示する。例えば、¥1,234と表示したいのに、¥1,234.00という風になる。これは如何にも不自然だ。

どうしたもんかと検索しても日本語で解決策が見つからない。しょうがないからリファレンスみたら、思いっきり好きな桁で丸めるオプションがあった。

<body ng-controller="ctrl">
  <div>
    <input ng-model="price">
  </div>
  <div>
      <dl class="dl-horizontal">
        <dt>そのまま</dt>
        <dd>{{price | currency}}</dd>
        <dt>.00を消す</dt>
      <dd>{{price | currency:undefined:0}}</dd>
    </dl>
    
  </div>

jsbinのデモはこちら

要は、{{1234 | currency : undefined : 0}}とするだけだ。undefinedにしないと通貨のシンボルが変更されるから、そこだけ要注意。

教訓:困ったらリファレンス読め

あ、ユーザが翻訳した古いリファレンスじゃないよ。あれ大昔のだから。