package com.algorithms;
import java.math.BigDecimal;
import java.util.Scanner;
/**
* 调和级数求和
* @author LYY
*
*/
public class TiaoHeJiShuTest {
public static void main(String[] args) {
System.out.println("请输入一个正整数:");
Scanner scanner = new Scanner(System.in);
int num = scanner.nextInt();
double sum = 0.0;
for(int i=1;i<=num;i++){
sum += 1.0/i;
}
BigDecimal bigDecimal = new BigDecimal(sum);
System.out.println("调和级数的和为 : " + sum);
//保留两位小数,四舍五入 四舍五入模式到正无穷
System.out.println("调和级数的和为 : " + bigDecimal.setScale(2, BigDecimal.ROUND_HALF_UP));
//保留两位小数,四舍五入 ROUND_CEILING 四舍五入到正无穷
System.out.println("调和级数的和为 : " + bigDecimal.setScale(2, BigDecimal.ROUND_CEILING));
//保留两位小数,四舍五入 ROUND_DOWN 向0的方向进行四舍五入
System.out.println("调和级数的和为 : " + bigDecimal.setScale(2, BigDecimal.ROUND_DOWN));
//保留两位小数,四舍五入 ROUND_FLOOR 向负无穷的方向进行四舍五入
System.out.println("调和级数的和为 : " + bigDecimal.setScale(2, BigDecimal.ROUND_FLOOR));
//ROUND_HALF_DOWN 保留两位小数,四舍五入 向(距离)最近的一边舍入,除非两边(的距离)是相等,如果是这样,向下舍入
System.out.println("调和级数的和为 : " + bigDecimal.setScale(2, BigDecimal.ROUND_HALF_DOWN));
//ROUND_HALF_EVEN 保留两位小数,向(距离)最近的一边舍入,除非两边(的距离)是相等,如果是这样,如果保留位数是奇数,使用ROUND_HALF_UP ,如果是偶数,使用ROUND_HALF_DOWN
System.out.println("调和级数的和为 : " + bigDecimal.setScale(2, BigDecimal.ROUND_HALF_EVEN));
//ROUND_HALF_DOWN 保留两位小数,向远离0的方向进行四舍五入
System.out.println("调和级数的和为 : " + bigDecimal.setScale(2, BigDecimal.ROUND_UP));
}
}