回答編集履歴

1

ソースコードの改良 (aの平方根を求めたい!!)

2018/03/23 06:29

投稿

退会済みユーザー
test CHANGED
@@ -55,3 +55,73 @@
55
55
  }
56
56
 
57
57
  ```
58
+
59
+ (追記)
60
+
61
+ aの平方根を求めるときのソースとなります。(入力)
62
+
63
+
64
+
65
+ ```Java
66
+
67
+ import java.util.Scanner;
68
+
69
+ import java.math.BigDecimal;
70
+
71
+
72
+
73
+ public class Sum {
74
+
75
+
76
+
77
+ public static void main(String[] args) {
78
+
79
+
80
+
81
+ Scanner sc = new Scanner(System.in);
82
+
83
+ String line = sc.nextLine();
84
+
85
+ Double n = Double.parseDouble(line);
86
+
87
+ BigDecimal a = new BigDecimal(n); //√aを求めたい
88
+
89
+ BigDecimal x = new BigDecimal("2.0");
90
+
91
+ BigDecimal delta = new BigDecimal("1.0");
92
+
93
+ BigDecimal sisu = new BigDecimal("1.0E-16");
94
+
95
+
96
+
97
+ int count = 0;
98
+
99
+ while (sisu.compareTo(delta) < 0) {
100
+
101
+ BigDecimal f = x.multiply(x).subtract(a);
102
+
103
+ BigDecimal df = x.multiply(new BigDecimal("2.0"));
104
+
105
+ x = x.subtract(f.divide((df),BigDecimal.ROUND_HALF_UP));
106
+
107
+ delta = (x.multiply(x).subtract(a)).abs();
108
+
109
+ count++;
110
+
111
+ System.out.println(count + "回目 誤差=" + delta);
112
+
113
+ }
114
+
115
+ System.out.println("x = " + x);
116
+
117
+ System.out.println("x * x = " + x.multiply(x));
118
+
119
+ }
120
+
121
+
122
+
123
+
124
+
125
+ }
126
+
127
+ ```