考虑到 10% 的税适用于除食品以外的所有物品。此外,对进口商品征收 5% 的附加税。
如果一张音乐 CD 的成本是 12.49。该项目的税为 1.499。如果一瓶进口香水的成本是 47.50,则该物品的税为 7.125
有一项政策规定,一件物品的税款应四舍五入到最接近的 0.05。因此,1.499 应四舍五入为 1.5,7.125 应四舍五入为 7.25。
上述舍入要求可以使用以下逻辑来实现:
(float) Math.ceil(taxAmount / 0.05f) * 0.05f;
将税收添加到物品的成本中可以得出:
音乐CD:12.49 + 1.5 = 13.99 进口巧克力盒:47.50 + 7.25 = 54.65。
我面临以下输入的问题:
如果进口一盒巧克力的成本是11.85,那么税金就是0.5925
使用四舍五入政策,四舍五入后的税金为 0.6。
当我们添加 11.85 + 0.6 这两个浮点数时,我们得到的结果是 12.450001。与其他输入不同,此特定输入提供了很多小数位,而不是其他输出中的 2 个小数位。
我尝试使用 BigDecimal 而不是 float 来存储所有值,并将比例设置为 2 位小数。这种方法的问题在于,如果未指定舍入策略,bigDecimal 将在某些情况下抛出异常。为 BigDecimal 提供舍入策略会导致使用提供给 BigDecimal 的舍入策略对项目成本和适用税费的总和进行舍入,从而改变所需的输出。