テンプレートタグで「四捨五入」の計算をする
Movable Type のテンプレートには、四則演算を行うためのモディファイアがあります。これらのモディファイアを使うと、「足す、引く、割る、掛ける」といった計算を、テンプレートタグだけで行うことができます。
今回は、Movable Type のコミュニティ「MTQ」内のトピック、「消費税 四捨五入 について」を題材に、「消費税を計算して、余りを四捨五入する」という方法をご紹介します。
前提条件
テンプレートの記述にあたって、前提条件は以下とします。
- 税抜き価格は、カスタムフィールド「<MTPrice>」に入力されている
- 消費税は8%とし、小数点以下の値は四捨五入する
- テンプレートには税抜き価格と税込価格の2つを表示する
実際のテンプレート
<MTPrice setvar="tax_calc">
<MTSetVar name="tax_calc" value="1.08" op="*">
<MTSetVar name="tax_calc" value="0.5" op="+">
<MTGetVar name="tax_calc" regex_replace="/(\d*)\.(\d*)/","$1" setvar="tax_include">
税抜き価格: <MTPrice numify="1"> 円
税込価格: <MTGetVar name="tax_include" numify="1"> 円
それでは、一行ずつ説明しましょう。
<MTPrice setvar="tax_calc">
まず最初に、税抜き価格 「<MTPrice>」 の値を、setvarモディファイアを使って、変数 「tax_calc」 に代入します。
<MTSetVar name="tax_calc" value="1.08" op="*">
tax_calcに、現在の税率1.08をかけて、消費税課税後の金額を算出します。掛け算は「op」モディファイアに「*」を指定して計算しています。
<MTSetVar name="tax_calc" value="0.5" op="+">
その後、tax_calcに0.5を足して、小数点以下を切り捨てます。こうすることで、四捨五入が完成します。足し算は「op」モディファイアに「+」を指定して計算しています。
<MTGetVar name="tax_calc" regex_replace="/(\d*)\.(\d*)/","$1" setvar="tax_include">
最後に、変数tax_calcの値を、regex_replaceを利用して、小数点以下を削除して、tax_include という変数に代入します。これで、四捨五入が完成します。
税抜き価格: <MTPrice numify="1"> 円
税込価格: <MTGetVar name="tax_include" numify="1"> 円
税抜き価格である <MTPrice> と、消費税を計算して四捨五入した変数 tax_include の2つを、MTタグを利用して出力します。
今回のテンプレートで利用しているタグは、それぞれ以下に解説がありますので、あわせてご覧ください。
MTQとは
冒頭にご紹介した 「MTQ」 とは、シックス・アパートが運営する Movable Type コミュニティで、ユーザーの皆様同士がお互いに質問を投稿したり、回答しあう掲示板として運営しています。
MTQ は、さまざまな知識・知恵が集積しているナレッジポータルでもあります。掲示板を見ていると、Movable Type の使い方について、新しい発見があります。ぜひお時間のあるときに閲覧、そしてご活用ください。
これからも、MTQ 内の有用なトピックを随時ご紹介していきますので、どうぞご期待ください。