【问题标题】:Applying a Tax for a Certain Quantity对一定数量征税
【发布时间】:2018-10-08 15:18:33
【问题描述】:

是否可以对一定数量征税?
例如:

1:0% 税
2-5:5% 税
6-10:10% 税
11-15:15 % 税
16-20:20% 税

问题是该函数总是对每个数量征收 5% 的税。
如果征收税款,则应更新总额,并从那里计算税款和最终总额。

var tax = Math.round(price * 0.05 * 100) / 100

【问题讨论】:

  • 您是否尝试使用 switch 语句并在 switch 内部进行计算?
  • 请参阅How to create a minimal, complete and verifiable example 并将您的代码减少到显示问题所需的最低限度。此外,您连续执行三个舍入操作,这是一个坏主意。先做所有的数学运算,然后只在最后进行舍入,因为简单的舍入是向上的。
  • 我更新了 sn-p 以便您更好地理解。
  • @RobG - 关于包含 MCVE 的好点(我已经编辑了问题)。但是关于回合操作,通常您为收取的(已经四舍五入的)价格支付(四舍五入的)税款。也许在这种情况下,这两个操作都是必要的。您不需要对最终价格进行四舍五入。

标签: javascript


【解决方案1】:

您可以使用switch 语句。

将其与round 逻辑一起封装在一个函数中:

function getTax( price ){
  var taxRate = 0;
  switch( true ){
    case ( price < 2 ):
    // or case ( price <= 1 ) depending on what you need
      break;
    case ( price < 6 ):
      taxRate = 0.05;
      break;
    case ( price < 11 ):
      taxRate = 0.1;
      break;
    case ( price < 16 ):
      taxRate = 0.15;
      break;
    default:
      taxRate = 0.2;
  }
  return Math.round( price * taxRate * 100 ) / 100;
}

然后调用函数获取返回值:

var tax = getTax( price );

switch( true ) 这句话的用法可能会令人困惑,并不是每个人都喜欢它。你可以阅读它herehere。如果您愿意,请使用 if 语句。

另外,请注意 some caveats 关于 Math.round 功能。

【讨论】:

    【解决方案2】:

    据我所知,您使用的是硬编码税。

    var tax = Math.round(price * 0.05 * 100) / 100
    

    在这里,在 changeTotal 函数中,您应该使用所需的税值,而不是简单地乘以 0.05

    【讨论】:

    • 是的,但是我如何为不同的数量分配不同的税?
    • 创建一个计算给定值税的函数。为此,您可以使用开关或任何看起来合适的逻辑。不过,我无法为你写下这个逻辑。
    猜你喜欢
    • 2013-04-08
    • 2017-05-09
    • 1970-01-01
    • 1970-01-01
    • 2013-11-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多