我在返回 BigDecimal 值的方法中编写算法,但有时计算的结果将是 + 或 - 无穷大。
我不想让程序崩溃,而是想捕获异常并将无穷大作为值返回,就像方法返回 double 值时那样。
例如 Double.POSITIVE_INFINITY;
那么如何在 BigDecimal 中存储无穷大?或者还有其他方法吗?
public static BigDecimal myalgorithm(){
//code to store infinity in a BigDecimal
//return the BigDecimal holding infinity
}
最佳答案
BigDecimal
没有无穷大的概念。我可以想到三个选项:
最干净 的方法可能是派生您自己的
MyBigDecimal
类,添加一个无穷大标志,告诉您实例是否包含无穷大,并覆盖其中的方法当您不持有无穷大时使用基类的版本,而当您持有无穷大时使用您自己的代码。您可以在代码中使用
null
作为标志值,尽管这可能有点麻烦。例如:if (theBigDecimal == null) { // It's infinity, deal with that } else { // It's finite, deal with that }
如果您已经将
null
用于其他用途,您可以拥有一个BigDecimal
实例,它实际上不包含无穷大,但您假装包含无穷大它,并使用==
来检查它。例如:// In your class somewhere: static final BigDecimal INFINITE_BIG_DECIMAL = new BigDecimal(); // Value doesn't matter // Then: if (theBigDecimal == INFINITE_BIG_DECIMAL) { // It's infinity, deal with that } else { // It's finite, deal with that }
关于java - 如何在 BigDecimal (Java) 中存储无穷大?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20814609/