java 0.05_在java中舍入到最接近的0.05的最佳方法

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值