我的做法,利用二分法,找方程的根。
x^3-input = 0;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
while (in.hasNext()) {
double d = in.nextDouble();
String res = getCubeRoot(d);
System.out.println(res);
}
}
// 保留一位小數,求解立方根。
public static String getCubeRoot(double input) {
double res = method(0, input, input);
// System.out.println(res);
int i = (int) (res * 100);
if (i % 10 < 5) {
int j = i / 10;
return j / 10 + "." + j % 10;
} else {
int j = i / 10 + 1;
return j / 10 + "." + j % 10;
}
}
// 這個方法能夠返回一個double的立方根,範圍在i和j之間。返回的是(i+j)/2
public static double method(double i, double j, double input) {
double mid = (i + j) / 2.0;
if (j - i < 0.01) return mid;
if (mid * mid * mid < input) {
return method(mid, j, input);
} else return method(i, mid, input);
}
}
保留兩位小數。四捨五入
如圖:
- printf 結合 “%.2f”
- print 結合 String.format("%.2f", xxxx)
- 第三種,並不能四捨五入,完全把小數部分拋去了