闲敲棋子落灯花- 2016-09-20 13:42 采纳率: 68.4%
浏览 1033
已采纳

Java中一个小的计算问题

Q:用Java语言编写程序,计算e=1+1/1!+2/2!+3/3!+.....+n/n!.要求e值精确到小数点后第五位。

下面是我写的代码。

package Cheng;

import java.util.Scanner;

public class Dutu {
public static int inputN(){
Scanner scanner=new Scanner(System.in);
int n;
System.out.println("请输入n的值:");
n=scanner.nextInt();
return n;
}
public static float figure(int n){
float l=0;
float sum=0;
int m,i,temp;
temp=n;
m=1;
for(;temp>=1;temp--){
for(i=1;i<=temp;i++)
m*=i;

    l=(float)temp/(float)m;
    sum+=l;
    }
    return sum;
}

public static void main(String[] args){
    int n=inputN();
    float j=1+figure(n);
    System.out.println("计算结果为"+j);
}

}
图片说明

  • 写回答

3条回答 默认 最新

  • 当作看不见 2016-09-21 12:10
    关注

    整数传给浮点型不会精度丢失,从低往高,自动转换(隐式转换),精度不丢失 ,从高向低,需要显示转换(强转),精度丢失,如何判断高低 ,看占字节的位数

      import java.util.Scanner;
    public class Dutu {
    public static int inputN(){
    Scanner scanner=new Scanner(System.in);
    int n;
    System.out.println("请输入n的值:");
    n=scanner.nextInt();
    return n;
    }
    public static float figure(float n){
            return n==1?n: figure(n-1)+n/jc(n);
    }
    public static float jc(float n){
            return n==1?n:jc(n-1)*n;
    }
    public static void main(String[] args){
        int n=inputN();
        float j=1+figure(n);
        System.out.println("计算结果为"+j);
    }
    }
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

悬赏问题

  • ¥15 我想在一个软件里添加一个优惠弹窗,应该怎么写代码
  • ¥15 fluent的在模拟压强时使用希望得到一些建议
  • ¥15 STM32驱动继电器
  • ¥15 Windows server update services
  • ¥15 关于#c语言#的问题:我现在在做一个墨水屏设计,2.9英寸的小屏怎么换4.2英寸大屏
  • ¥15 模糊pid与pid仿真结果几乎一样
  • ¥15 java的GUI的运用
  • ¥15 Web.config连不上数据库
  • ¥15 我想付费需要AKM公司DSP开发资料及相关开发。
  • ¥15 怎么配置广告联盟瀑布流