java - 如何在java中以bigdecimal的相反顺序处理负值?

标签 java bigdecimal

我在 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/

相关文章:

java - BigDecimal 的加法

java - 将大十进制格式转换为美元形式的最佳方法是什么?

java - Volley jsonArray 传递

java - 错误消息指出 java 的构造函数放错位置

java - 如何抓取给定标签内的字符串?

java - "new BigDecimal(13.3D)"结果不精确 "13.3000000000000007105.."?

java - 算术异常: "Non-terminating decimal expansion; no exact representable decimal result"

java - 为 bigdecimal 处理 Null

Java 覆盖 Android 中的 XML?

java - 从正则表达式生成图灵机的算法