Java BigDecimal 问题(字符串到 BigDecimal - BigDecimal 到字符串)
Java BigDecimal Problems (String to BigDecimal - BigDecimal to String)
我知道,网站上有几十个这样的主题,但我遇到了 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
我该如何解决?
顺便说一句,我想保留小数的精确值。
这个有效
BigDecimal a = new BigDecimal("22");
BigDecimal b = new BigDecimal("3");
BigDecimal res = a.divide(b, 2, RoundingMode.HALF_UP);
System.out.println(res);
关键是要有一个 roundingMode,否则如果不能准确表示值,将抛出异常。
我知道,网站上有几十个这样的主题,但我遇到了 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
我该如何解决?
顺便说一句,我想保留小数的精确值。
这个有效
BigDecimal a = new BigDecimal("22");
BigDecimal b = new BigDecimal("3");
BigDecimal res = a.divide(b, 2, RoundingMode.HALF_UP);
System.out.println(res);
关键是要有一个 roundingMode,否则如果不能准确表示值,将抛出异常。