本人刚入门,求解
写出过程代码
s=1-1/2+1/3-1/4+1/5-...
求当s>0.1时的s的值 并打印出全过程
写出过程代码
s=1-1/2+1/3-1/4+1/5-...
求当s>0.1时的s的值 并打印出全过程
解决方案 »
- java 的图形设计插件装上了为什么不显示
- struts 标签logic
- 初学者提问,好心人告诉我下
- JTable 和数据库连用的问题!!急,在线等待!
- 有关编写输出"*"applet程式
- java中数据类型间的转换
- 我的程序出什么问题了呢?
- 在jbuilder 7 中我设置了窗体的layout属性为xylayout,但是我用ie6.0打开网页时无法显示控件!紧急!!!在线等待!谢谢!
- 是关于jcreator的设置问题,请指点.急等回复,多谢.
- 关于redhat网站上下载的jre java-sun-1.6.0安装包的问题
- 帮忙解决2个简单问题,没分了,最后的20分拿出来
- 请教如何打包使用数据库的程序??
System.out.print("s= 1");
for(int i=1;;i++){
if(s < 0.1){
break();
}
if(i%2 == 1){
s = s - 1/(i+1);
System.out.print("- 1/"+(i+1));
}else{
s = s + 1/(i+1);
System.out.print("+ 1/"+(i+1)); }
}
public static void main(String args[]) throws IOException{
BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
String s=br.readLine();
double n =Double.parseDouble(s);
double sum=1;
for(int i=2;i<n;i++){
if(sum>0.1){
if(i%2==0){
sum=sum-(1.0/i);
System.out.println("sum: "+sum);
}else{
sum=sum+(1.0/i);
System.out.println("sum: "+sum);
}
}
}
}
}
lz的问题也是有问题的,s>0.1?那还算什么呀,还没算就大于了0.1,我想应该是计算精度误差大于0.1吧,代码如下:
public static void main(String[] args) {
double epsilon = 0.1d; // 计算精度
double sum = 1.0d;
double preSum = 0d;
double error = 1;
StringBuilder sb = new StringBuilder("s=1");
for(int i = 1; error > epsilon; i++) {
preSum = sum;
if ((i & 1) != 0) {
sum -= 1.0d / (i + 1);
sb.append("-1/");
} else {
sum += 1.0d / (i + 1);
sb.append("+1/");
}
sb.append(i + 1);
error = Math.abs(sum - preSum);
System.out.printf("%s=%.16f (精度误差: %.5f)%n", sb.toString(), sum, error);
}
}