Java中的平方根

时间:2013-11-05 10:32:28

标签: java

我应该像那样用Java编写吗?如果没有,我该怎么写呢?

enter image description here

import java.util.*;
public class Soru {
    public static void main(String[] args) {    
        int m,n,c;
        double f=0;
        Scanner type = new Scanner(System.in);
        System.out.print("Enter the m value :");
        m=type.nextInt();
        System.out.print("Enter the n value :");
        n=type.nextInt();
        System.out.print("Enter the c value :");
        c=type.nextInt();       
        f=Math.pow(c, m/n);
        System.out.println("Resul:"+f);
    }
}

2 个答案:

答案 0 :(得分:6)

与其他语言一样,m/n将是一个整数,对于m=1,n=2,您将获得m/n=0

如果您想要非整数结果,请考虑将mn设为doubles - 或在评估中将它们投射到它。

示例:

int m = 1, n = 2, c = 9;
System.out.println(Math.pow(c, m/n));
System.out.println(Math.pow(c, ((double)m)/n));

将屈服:

1.0
3.0

答案 1 :(得分:1)

虽然你的逻辑是正确的,并且如果 m / n是int ,它将完美地工作,但是有些情况下它将无法给出正确的结果。例如, 5 ^(5/2)会得到 5 ^ 2 的结果。因此,请进行以下更改:

int m,n,c;
double f=0;
Scanner type = new Scanner(System.in);
System.out.print("Enter the m value :");
m=type.nextInt();
System.out.print("Enter the n value :");
n=type.nextInt();
System.out.print("Enter the c value :");
c=type.nextInt();
f=Math.pow(c, (double)m/n);
System.out.println("Resul:"+f);

完整代码如下:

import java.util.*;

public class Soru {

    public static void main(String[] args) {
        int m,n,c;
        double f=0;
        Scanner type = new Scanner(System.in);
        System.out.print("Enter the m value :");
        m=type.nextInt();
        System.out.print("Enter the n value :");
        n=type.nextInt();
        System.out.print("Enter the c value :");
        c=type.nextInt();
        f=Math.pow(c, (double)m/n);
        System.out.println("Resul:"+f);    
    }
}

<强>输出

Enter the m value :5
Enter the n value :2
Enter the c value :2
Resul:5.65685424949238