当前位置: 首页 > 面试题库 >

在Java中四舍五入至最接近0.05的最佳方法

叶建柏
2023-03-14
问题内容

请考虑对除食品之外的所有商品加收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的舍入策略对项目成本和适用税款的总和进行舍入,从而更改所需的输出。


问题答案:

您可以使用long而不是double使用double来做

double d = Math.round(d * 20) / 20.0; // round up to multiple of 0.05

使用多长时间(以美分计)

long l = (l + 3) / 5 * 5;

尽管它通常被认为是最佳使用习惯intlong或者BigDecimal大多数投资银行和基金都使用它,double因为一旦您了解了如何安全地使用它们,它们的使用就比使用长(比长)和快(比BigDecimal)要好。



 类似资料:
  • 问题内容: 我试图找到一种方法将值四舍五入到最接近的0.05。例如: 0.93四舍五入为0.95 0.81四舍五入为0.80 0.65停留0.65 0.68至0.70 0.67至0.65 用Java有没有简单的方法可以做到这一点? 问题答案: 一种选择如下: 将该值乘以20。 使用进行四舍五入为最接近的整数。 再除以20。 例如: 希望这可以帮助!

  • 问题内容: 在Java中这怎么可能? 我有一个浮动货币,我想将其四舍五入到最接近的.5。 例如: 1.1应该四舍五入到1.0 1.3应该四舍五入到1.5 2.5应该四舍五入到2.5 3.223920应该四舍五入到3.0 编辑 :另外,我不只是想要字符串表示形式,还希望在此之后使用实际的float。 问题答案: @SamiKorhonen在评论中说: 乘以二,取整,最后除以二 所以这是代码: 输出:

  • 有一项政策规定,一个项目的税收应该四舍五入到最接近的0.05。因此,1.499应四舍五入至1.5,7.125应四舍五入至7.25。 上述四舍五入要求可以使用以下逻辑实现: 把税加到该项目的成本上就会产生: 我尝试使用BigDecimal而不是float来存储所有的值,并将刻度设置为小数点后2位。这种方法的问题是,如果没有指定舍入策略,bigDecimal将在某些情况下引发异常。为BigDecima

  • 问题内容: 如果我得到数字46,并且想四舍五入到最接近的十。如何在python中执行此操作? 46转到50。 问题答案: 您可以使用向上舍入,然后乘以10 用就做

  • 问题内容: 我想要一个用52调用时返回55的php函数。 我已经尝试过该功能: 它返回 90, 但我要 95 。 谢谢。 问题答案: 这可以通过多种方式来完成,具体取决于您的首选舍入约定: 1.四舍五入到5 的 下一个 倍数,不包括当前数字 行为:50个输出55,52个输出55 2.四舍五入到 最接近 的5的倍数,包括当前数字 行为:50个输出50、52个输出55、50.25个输出50 3.舍入到

  • 问题内容: 我来到了Java程序的一部分,我需要四舍五入到最接近的百位数,并认为可能有某种方法可以做到这一点,但我想没有。因此,我在网上搜索了示例或任何答案,但由于所有示例看起来都接近最接近的一百,因此至今仍未找到任何答案。我只想这样做并向上取整。也许有一些我忽略的简单解决方案。我已经尝试了其他功能,但到目前为止还没有找到答案。如果有人可以帮助我解决这个问题,我将不胜感激。 如果我的电话号码是20