当前位置: 首页 > 知识库问答 >
问题:

在java中最接近0.05的最佳方法

辛意智
2023-03-14

有一项政策规定,一个项目的税收应该四舍五入到最接近的0.05。因此,1.499应四舍五入至1.5,7.125应四舍五入至7.25。

上述四舍五入要求可以使用以下逻辑实现:

    (float) Math.ceil(taxAmount / 0.05f) * 0.05f;

把税加到该项目的成本上就会产生:

我尝试使用BigDecimal而不是float来存储所有的值,并将刻度设置为小数点后2位。这种方法的问题是,如果没有指定舍入策略,bigDecimal将在某些情况下引发异常。为BigDecimal提供舍入策略会导致使用为BigDecimal提供的舍入策略对项目成本和适用税项的总和进行舍入,从而更改所需的输出。

共有1个答案

曹泉
2023-03-14

您可以使用long而不是double来使用double You can do

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

用长(作为美分)

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

虽然使用intlongBigDecimal通常被认为是最佳实践,但大多数投资银行和基金使用double,因为一旦您了解如何安全地使用它们,它们就更简单(比long)和更快(比BigDecimal)。

 类似资料:
  • 问题内容: 请考虑对除食品之外的所有商品加收10%的税。此外,进口商品还需支付5%的附加税。 如果音乐CD的成本是12.49。该项目的税将是1.499。如果进口一瓶香水的价格为47.50,则该商品的税费为7.125 有一项政策规定应将某项商品的税额四舍五入至最接近的0.05。因此,应将1.499舍入为1.5,并将7.125舍入为7.25。 以上舍入要求可以使用以下逻辑实现: 将税项加到商品成本中,

  • 问题内容: 我试图找到一种方法将值四舍五入到最接近的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。 例如: 希望这可以帮助!

  • 问题内容: 我正在寻找要舍入到Golang中最接近的0.05的函数 。使用该函数的最终结果必须始终为0.05的因数。 以下是我要查找的功能的一些输出示例:(该功能Round还不存在,我希望可以将其包含在答案中) 我已经搜索了很长时间,但是没有找到任何答案。 问题答案: 前言: 我在中发布了此实用程序,请参见。 Go 1.10已发布,并添加了功能。此函数四舍五入到最接近的整数(基本上是 “四舍五入至

  • 问题内容: 我有一个日期对象列表和一个目标日期。我想在列表中找到最接近目标日期的日期,但仅找到目标日期之前的日期。 示例:2008-10-1 2008-10-2 2008-10-4 目标日期为2008-10-3,我想获得2008-10-2 最好的方法是什么? 问题答案: Sietse de Kaper解决方案采用了 反向 排序的列表,绝对不是最自然的解决方案 Java中的自然排序顺序遵循递增的自然

  • 问题内容: 我想知道是否有可能找到一个最接近的元素的元素 ,是不是 在那里。 例如,如果我们具有[1,3,6,7]值,并且正在寻找最接近4的元素,则它应返回3,因为3是数组中的最大数字,小于4。 我希望这是有道理的,因为英语不是我的母语。 问题答案: 如果数组已排序,则可以在以下位置进行修改的二进制搜索:

  • 我试图用Java编写异步编程,并使用ExecutorService创建一个由多个线程支持的池来提交多个可调用任务,但对于如何关闭ExecutorService我没有什么问题。 以下是我的原始代码: 这样做很好,执行器在线程完成后关闭。但我担心如果写错了什么,可调用任务中的代码将永远占用,程序将永远停止,永远不会退出。 我的问题是如何设置强制关闭池中线程的时间,这样我就不需要显式地使用来阻止程序。