【发布时间】:2014-11-10 08:50:58
【问题描述】:
我的任务是编写一个程序,提示用户输入一个正整数 a 和一个整数
n大于2,将正整数a的第n个根的值精确到100位打印到屏幕上。我已经使用Math.pow 获得了root 权限,我感觉好像我做的一切都是正确的。唯一的问题是每次我运行我的程序时,无论我为a 和n 输入什么数字,输出都是1.0。我的代码有什么问题?
import java.util.Scanner;
import java.lang.Math;
public class Q8 {
public static void main(String[] args) {
System.out.println("Enter a positive number: ");
Scanner in = new Scanner(System.in);
double a = in.nextDouble();
System.out.println("Enter an integer greater than 2: ");
Scanner in2 = new Scanner(System.in);
int n = in.nextInt();
System.out.println(pow (a,n));
}
private static double pow(double a, int n) {
if (n == 0){
return 1;
}
else{
double sum = Math.pow(a,(1/n));
return sum;
}
为什么答案总是 1.0?
【问题讨论】:
-
我没有看到
root在此表达式中使用的任何地方定义:Math.pow(a,(1/root))。这是什么? -
@icza 这是一个错字。
root应该是n或n应该是root。 -
使用
double永远不会得到 100 位小数。我可以给你BigDecimal感兴趣吗? -
pow顺便说一下这个函数的名字很糟糕。 -
如何合并 BigDecimal?
标签: java recursion square-root