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

Java BigDecimal问题(字符串到BigDecimal-BigDecimal到字符串),java,android,parsing,bigdecimal,Java,Android,Parsing,Bigdecimal,我知道,在这个网站上有很多这样的话题,但我有3个问题,我不能同时解决所有的问题 事实上,我正在尝试为Android制作一个计算器,但有时我无法得到预期的结果 我的代码的一部分是 }else if(operator.equals("/")){ if(resultScreen.indexOf("/")==0){ strNum2 = resultScreen.substring(resultScreen.indexOf("/")+1,resul

我知道,在这个网站上有很多这样的话题,但我有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

它出现了

三,

我怎样才能解决这个问题

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

这很有效

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

关键是要有一个roundingMode,否则如果值不能准确表示,将抛出一个异常。

请阅读关于divide的javadoc:(并查看)我认为这是一个重复。BigDecimal res=a.除法(b,9,BigDecimal.四舍五入半向上);这样会更好。非常感谢。