Java BigDecimal问题(字符串到BigDecimal-BigDecimal到字符串)
我知道,在这个网站上有很多这样的话题,但我有3个问题,我不能同时解决所有的问题 事实上,我正在尝试为Android制作一个计算器,但有时我无法得到预期的结果 我的代码的一部分是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
}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.四舍五入半向上);这样会更好。非常感谢。