gpt4 book ai didi

java - 在Java中,如何实现这种类型的数字舍入?

转载 作者:搜寻专家 更新时间:2023-10-31 20:28:18 24 4
gpt4 key购买 nike

我正在编写一个小型物理应用程序。我打算做的是进行数字舍入。问题在于它不是固定的舍入,而是取决于小数位值的可变舍入。我会解释这个问题。

  • 我总是需要保留整个整数部分(如果有的话)和前五位小数(如果有的话)。
  • 始终使用四舍五入。

    21.1521421056 变成 21.15214
    34.1521451056 变成 34.15215

  • 如果结果只包含十进制数字,则:

    • 如果前五位数字包含非零数字,则保留它们。

      0.52131125 变成 0.52131
      0.21546874 变成 0.21547
      0.00120012 变成 0.0012

    • 如果前五位数字都是零数字 0.00000,则向下查找包含非零数字的前五位数字。

      0.0000051234 变成 0.0000051234
      0.000000000000120006130031 变成 0.00000000000012001

我需要在使用 BigDecimal 时进行舍入,因为这是我需要的要求。

最佳答案

如果我正确理解您的需求,我认为基于实验,这会奏效。如果 d 是包含数字的 BigDecimal:

BigDecimal rounded = d.round(new MathContext
(d.scale() - d.precision() < 5
? d.precision() - d.scale() + 5
: 5));

关于java - 在Java中,如何实现这种类型的数字舍入?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23767505/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com