考虑到除食品外的所有商品均适用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的舍入策略进行舍入,从而改变所需的输出.