我在 BigDecimal
中遇到一个问题,即以相反的顺序处理负值。我遇到了 NumberFormatException
。怎么解决呢?
这是我的代码:
import java.math.BigDecimal;
public class Java_bigdecimal_signum {
public static void main(String args[]) {
BigDecimal obj = new BigDecimal("20.15-");
int i = obj.signum();
System.out.println("\nobject value : " + obj
+ "\nmethod generated value : " + i);
}
}
异常(exception)是:
Exception in thread "main" java.lang.NumberFormatException
at java.math.BigDecimal.<init>(Unknown Source)
at java.math.BigDecimal.<init>(Unknown Source)
at Java_bigdecimal_signum.main(Java_bigdecimal_signum.java:6)
我需要以下输出:
object value : -20.15
method generated value : -1
提前致谢。
最佳答案
好吧,我假设您从实际代码中的其他地方获取末尾带有减号的数字String
,而不是将String
文字传递给BigDecimal
。如果是这样,您可以在将 String
变量传递给 BigDecimal 之前对其进行处理,然后将 -
从末尾移动到开头,如下所示。
import java.math.BigDecimal;
public class Java_bigdecimal_signum {
public static void main(String args[]) {
String number = "20.15-";
if(number.endsWith("-")){
number = "-" + number.substring(0, number.length() -1);
}
BigDecimal obj = new BigDecimal(number);
int i = obj.signum();
System.out.println("\nobject value : " + obj
+ "\nmethod generated value : " + i);
}
}
而且,显而易见的是,如果您确实只是将 String
文字传递给 BigDecimal
(如示例代码中所示),那么只需将减号放在开头即可。 :)
希望这有帮助。
关于java - 如何在java中以bigdecimal的相反顺序处理负值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22530875/