分数矩阵

Problem Description
我们定义如下矩阵:
1/1 1/2 1/3
1/2 1/1 1/2
1/3 1/2 1/1
矩阵对角线上的元素始终是1/1,对角线两边分数的分母逐个递增。
请求出这个矩阵的总和。

Input
每行给定整数N (N<50000),表示矩阵为 N*N.当N为0时,输入结束。

Output
输出答案,保留2位小数。

Sample Input
1
2
3
4
0

Sample Output
1.00
3.00
5.67
8.83

http://blog.csdn.net/kavu1/article/details/50865564

import java.math.BigDecimal;

public class Matrix {

public static void main(String[] args) {
    System.out.println("N: 1    和: "+getSum(1)+"");
    System.out.println("N: 2    和: "+getSum(2)+"");
    System.out.println("N: 3    和: "+getSum(3)+"");
    System.out.println("N: 4    和: "+getSum(4)+"");
}

public static float getSum(int num){
    float sum = (float)num;
    //System.out.println("1:计算对角线的和        sum = "+num);
    for(int i = 1;i < num; i++){
        //System.out.println(i+1+":第"+i+"次循环加上所有1/"+(i+1)+"的和        sum = "+sum+" + "+"1/"+(i+1)+" * "+(num-i)+" * 2 ");
        sum = sum + 1F/(i+1F)*(num-i)*2F;
    }
    //和保留2位小数
    return getDecimals(sum,2);
}

public static float getDecimals(float num,int dig){
    BigDecimal sum_b = new BigDecimal(num); 
    float result = sum_b.setScale(dig, BigDecimal.ROUND_HALF_UP).floatValue(); 
    return result;
}

}