java中的数学计算分数

问题描述:

我正在尝试实现基本计算。该程序采用2个数字,它正常工作,10除以5并给出答案2.如果任何较小的值除以较大的值,它会给我0,我可以在小数中得到答案吗?java中的数学计算分数

例8 100等于8/100,而不是0

public class numtheory { 

    public static void main(String[] args) { 

     int n1; 
     int n2; 
     Scanner scan = new Scanner(System. in); 
     System.out.println("input number 1: "); 
     n1 = scan.nextInt(); 
     System.out.println("input number 2: "); 
     n2 = scan.nextInt(); 
     int temp1 = n1/n2; 
     System.out.print("\n Output :\n"); 
     System.out.print(temp1); 
     System.exit(0); 

    } 

} 
+0

参见:http://*.com/questions/474535/best-way-to-在Java中表示分数?rq = 1 – Justin 2013-04-25 17:37:45

您需要将您的数字转换为double分为:相反

double temp = ((double) n1)/n2; 
+0

并格式化输出! – 2013-04-25 16:45:02

+0

这给了他一个小数的结果,他想输出为分数。 – NominSim 2013-04-25 16:46:55

+0

答案显示0.08 – newbieprogrammer 2013-04-25 16:48:54

使用整数,你需要用双。 这是因为整数只能包含数字,其中double可以包含十进制数字。

ü可以改变所有的INT两倍或铸由dooing

((double) yourIntValue) 

你也可以得到输入的字符串翻一番,并与

double dval=Double.parseDouble(value); 

解析它。如果你想要产生一小部分,你可以打印出来:

System.out.println(n1 + "/" + n2); 

这将打印出你给的任何数字thoug h,他们不会减少。 但是,您可以自己减少他们的东西,如:

int n = n1; 
int d = n2; 

while (d != 0) { 
    int t = d; 
    d = n % d; 
    n = t; 
} 

int gcd = n; 

n1 /= gcd; 
n2 /= gcd; 

,然后打印出来:

System.out.println(n1 + "/" + n2);