Java BigDecimal问题(字符串到BigDecimal - BigDecimal到String)

时间:2016-11-22 06:24:24

标签: java android parsing bigdecimal

我知道,网站上有很多这样的话题,但我遇到了3个问题,我无法同时解决所有这些问题。

实际上,我正在尝试为 Android 制作一个计算器,但有时我无法得到我所期望的。

我的代码的一部分是;

}else if(operator.equals("/")){

            if(resultScreen.indexOf("/")==0){
                strNum2 = resultScreen.substring(resultScreen.indexOf("/")+1,resultScreen.length());
                intNum1 = result;
            }else{
                strNum1 = resultScreen.substring(0,resultScreen.indexOf("/"));
                strNum2 = resultScreen.substring(resultScreen.indexOf("/")+1,resultScreen.length());
                intNum1 = new BigDecimal(strNum1);
            }

            intNum2 = new BigDecimal(strNum2);


            if(intNum2.equals(0)){
                tvScreen.setText("Err");
                resultScreen ="";
            }else{
                result = intNum1.divide(intNum2);

                resultScreen = result.toString();

                tvScreen.setText(resultScreen);
                resultScreen ="";
            }
        }

当我尝试时;

  

22/7

它出现了;

  

3

我该如何解决?

顺便说一句,我想保留十进制的确切值。

1 个答案:

答案 0 :(得分:2)

这有效

    BigDecimal a = new BigDecimal("22");
    BigDecimal b = new BigDecimal("3");
    BigDecimal res = a.divide(b, 2, RoundingMode.HALF_UP);
    System.out.println(res);

关键是要有一个舍入模式,否则如果无法准确表示该值,则会抛出异常。