java中的数值计算,当存在double,float等类型的计算时,容易出现不完全是整数的结果,当针对具体问题的时候,不一定非要使用BigDecimal类来实现计算。
如下例,当要求计算除法保存一位或者两位小数的时候,可以将除数扩大100或者1000倍,使用int类型即可完成。
首先输入要输入的整数个数n,然后输入n个整数。输出为n个整数中负数的个数,和所有正整数的平均值,结果保留一位小数。
java代码如下:
import java.util.Scanner;
public class CountNegAverPositive {
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
while(sc.hasNextInt()) {
int num = sc.nextInt();
int[] a = new int[num];
int countNeg=0;
int countZero=0;
int sum=0;
for(int i=0;i<num;i++) {
a[i]=sc.nextInt();
if(a[i]<0) {
countNeg++;
a[i]=0;
}
else if(a[i]==0) {
countZero++;
}
}
for(int i=0;i<num;i++) {
sum+=a[i];
}
sum*=100;//你不是要保留一位小数吗,我给你乘个100,直接返回int值就行了,不用考虑什么bigdecimal类没有精度损失,或者是字符串匹配
int res=sum/(num-countNeg-countZero);
System.out.print("负数有"+countNeg+"个"+"正整数的均值保留一位小数为");
if(res%10>=5) {
System.out.println(res/100+"."+((res%100/10)+1));
}
else {
System.out.println(res/100+"."+((res%100/10)));
}
}
sc.close();
}
}