gpt4 book ai didi

java - 在Java中检查BigDecimal小单位的最佳方法

转载 作者:行者123 更新时间:2023-12-02 12:20:16 26 4
gpt4 key购买 nike

我为金额设置了一个小单位,即:0.01

这意味着金额最多允许有 2 位小数。

对于这些示例,Java 中最好、最简单的验证检查是什么:

  • 5 --> 有效
  • 5.0 --> 有效
  • 5.00 --> 有效
  • 5.000 --> 有效
  • 5.1 --> 有效
  • 5.11 --> 有效
  • 5.111 --> 无效
  • 5.110 --> 有效

代码应该是这样的:

public void isValid(BigDecimal amountToCheck, BigDecimal minorUnit) {
//TODO
}

最佳答案

这个答案的最大部分取自 Determine Number of Decimal Place using BigDecimal .

所以基本上你有一种方法可以给你小数位数(不包括尾随的0小数):

int getNumberOfDecimalPlaces(BigDecimal bigDecimal) {
String string = bigDecimal.stripTrailingZeros().toPlainString();
int index = string.indexOf(".");
return index < 0 ? 0 : string.length() - index - 1;
}

然后你可以根据你的需要调用它:

public boolean isValid(BigDecimal amountToCheck, BigDecimal minorUnit) {

return getNumberOfDecimalPlaces(amountToCheck) <= getNumberOfDecimalPlaces(minorUnit);
}

或者正如 @Pijotrek 的评论所建议的:

public boolean isValid(BigDecimal amountToCheck, int maxDecimals ) {

return getNumberOfDecimalPlaces(amountToCheck) <= maxDecimals;
}

关于java - 在Java中检查BigDecimal小单位的最佳方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45840028/

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