首页新闻找找看学习计划

java如何计算1/60+....+1/70

1
悬赏园豆:20 [已关闭问题] 关闭于 2018-10-13 13:15

public static void main(String[] args) {
BigDecimal fz = new BigDecimal(1);
for(int i=60;i<=70;i++){
BigDecimal fm = new BigDecimal(i);
BigDecimal div = fz.divide(fm, 3, BigDecimal.ROUND_HALF_UP);
System.out.println(div);
}
}
0.016
0.016
0.016
0.015
0.015
0.015
0.015
0.014
0.014
怎么把这些数累加呢

德·盖尔芒特的主页 德·盖尔芒特 | 初学一级 | 园豆:156
提问于:2018-10-13 13:11
< >
分享
所有回答(2)
0

public static void main(String[] args) {
BigDecimal fz = new BigDecimal(1);
BigDecimal f = new BigDecimal(0);
for (int i = 1; i <= 10; i++) {
BigDecimal fm = new BigDecimal(i);
BigDecimal div = fz.divide(fm, 3, BigDecimal.ROUND_HALF_UP);
f = f.add(div);
System.out.println(div);
System.out.println(f);
}
}

whnbky | 园豆:191 (初学一级) | 2018-10-22 15:45

题目是从1/60开始的,循环内部方法divide第一参数的取值是作为分母,也就是for循环的i要从60开始

支持(0) 反对(0) PottyHarry | 园豆:302 (菜鸟二级) | 2018-11-01 15:15

@PottyHarry: 把for循环里的值改了就行了,这只是我做测试时写的,忘记改了。

支持(0) 反对(0) whnbky | 园豆:191 (初学一级) | 2018-11-01 15:42
0

楼主,使用BigDecimal的add()方法就可以将这些数给加起来,但是每个BigDecimal每次加减乘除都会返回一个新的BigDecial对象,所以需要用使用原来的对象去重新接收这个新的变量,代码如下:
BigDecimal bd = new BigDecimal(1);
BigDecimal result = new BigDecimal(0);
for (int i = 60;i<=70;i++){
//使用result重新接收相加的BigDecimal对象
result = result.add(bd.divide(new BigDecimal(i),3,BigDecimal.ROUND_HALF_UP));
}
System.out.println(result);

PottyHarry | 园豆:302 (菜鸟二级) | 2018-11-01 15:32
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册