JavaScriptで消費税計算、四捨五入・切り上げ・切り捨て
- 2013年11月13日 13:28
- JavaScript
消費税が変わるたびに価格表を修正するのは精神的に費用的にもつらい作業です。JavaScriptを使って8%や10%の消費税込み・税抜き計算に簡単に対応できるようにしましょう。
※2013/11/19更新
現在5%の消費税率は、2014年4月に3%増の8%に、そして2015年10月には10%になることがほぼ決まりのようです。お店の値札はもちろん、Webサイトに表記してある値段も修正対応が必要になってきます。
そこで消費税を計算して表示するJavaScriptを用意してみました。jQueryを使っています。
JavaScriptで消費税計算
var tax = 1.05; //消費税5%
$(function() {
$(".price").each(function(){
var a = $(this).text(), //数値を取得
b = a.replace(/¥/g,""), //¥マーク削除
c = parseInt( b.replace(/,/g, ""), 10), //カンマ削除
d = c * tax, //消費税計算
e = Math.round(d).toString(), //四捨五入して文字列に
price = e.replace(/(\d)(?=(\d{3})+$)/g, "$1,"); //カンマ追加
$(this).children("span").text(" (税込 ¥" + price + ")"); //数値をもどす
});
});
<p class="price">¥500<span></span></p>
<p class="price">¥1,250<span></span></p>
<p class="price">¥2,345,600<span></span></p>
JavaScript解説
IE6〜IE10動作確認済み。「var tax = 1.05」を変えてやれば、消費税8%や10%にも簡単に対応できます。あとはコメントの通りです。
税込み価格に書き換えるだけの場合は、最後の1行を下記に書き換えてHTML内のspan要素を削除して下さい。
$(this).text(price);
※2013/11/19追記
¥マークとカンマの削除は、まとめて下記でもいいです。
c = parseInt( a.replace(/¥|,/g, ""), 10),
それと、今回は2回しか出てこなかったのでそのままですが、「$(this)」の参照が複数回ある場合に、「$this = $(this)」として変数「$this」に代入しておくと「$(this)」を何度も呼び出すより処理が速くなるそうです(多川さんThanks!)。
var $this = $(this),
a = $this.text(),
...
$this.children("span").text(" (税込 ¥" + price + ")");
切り上げ、切り捨て
四捨五入ではなく、切り上げや切り捨てにしたい場合は下記を利用して下さい。
e = Math.ceil(d).toString(), //切り上げ
e = Math.floor(d).toString(), //切り捨て
おまけ JavaScriptを1行で記述
$(function() {
$(".price").each(function(){
$(this).children("span").text(" (税込 ¥" + Math.round(parseInt($(this).text().replace(/¥/g,"").replace(/,/g, ""), 10) * tax).toString().replace(/(\d)(?=(\d{3})+$)/g, "$1,") + ")");
});
});
-
多川
2013年11月18日 09:58 お世話になっております。
多川です。JavaScriptのコードに関しまして、
間違いというほどではないのですが、
短く書けたり、エラーが起きにくく書くことができる箇所がありましたので、
ご紹介をさせていただきます。var $me = $(this), // $(this)を使い回す場合は一旦変数に入れたほうが処理が速いそうです
price = $me.text().replace(/¥|,/g, ""), // ¥マークとカンマは一度に置換すると良いかと思いました
price = parseInt(price, 10) // parseIntの第二引数は省略しないことが推奨されます以上です。
ご参考になれば幸いです。▼参考
JavaScriptでparseIntする場合は基数を指定しようorz | 株式会社LIG
http://liginc.co.jp/web/js/31018
- このエントリーのトラックバックURL
- http://www.ibnet.ne.jp/mt/mt-tb.cgi/1042