LoginSignup
0

More than 3 years have passed since last update.

消費税計算 税込み金額からの逆算だと丸め方法(切捨、四捨五入、切上)は統一できない

Last updated at Posted at 2019-09-20

背景

「消費税の計算方法を切捨てで統一してください!」と頼まれて、「はい、お安い御用!今は切上になってるんならその反対にすればいいんだよね。」とチャチャッと修正して動作確認。

なんか変な数字が、税込金額が7,270円で、消費税率が10%の時に税抜金額が6610円で税額が610円になっている。なぜ???

結論

以下の会計士さんのブログにも記載されていますが、税込金額からの逆算だと丸め方法は統一できません。

設定できない税込価格がある?! | かきしちカンパニー

税率によって違うのですが、10%の場合だと、たとえば税込7,270円から逆算して税額、税抜を求めると税額は「切上」にするしかありません。(下表の例3、それ以外は全てNG)

# 税抜 税額 合計 税込金額
は正しい?
税額
は正しい?
税率の
丸め方法
例1 6610 661 7271 NO YES
例2 6610 660 7270 YES NO
例3 6609 661 7270 YES YES 切上
例4 6609 660 7269 NO YES 切捨

税込金額から税額を算出するアルゴリズム(できる限り切捨てる版)

/**
 * 消費税計算(税込料金から税抜料金と税額を算出する)
 * taxIncludePrice 税込料金
 * taxRate 税率(10%なら10)
 */
function calc( taxIncludedPrice , taxRate ) {
    // 税額計算(切捨て)
    var tax = Math.floor(taxIncludedPrice * taxRate / (100 + taxRate));
    var taxExcludedPrice = taxIncludedPrice - tax;

    // 税額が正しいか検証(税抜から税額を求める)
    var tax_for_check = Math.floor(taxExcludedPrice * taxRate / 100);
    // 不一致なら補正(切上)
    if(tax_for_check > tax){
        taxExcludedPrice--;
        tax++;
    }
}

消費税10%の場合の規則性

テストしたら面白いことがわかりました。

切上が必要になるのは、10円 + (11円 x n)でした。(nは整数)
逆に言うと、税込金額から10円を引いて11で割り切れる場合は、切上が必要です。

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0