回答編集履歴
1
追記
test
CHANGED
@@ -25,3 +25,35 @@
|
|
25
25
|
あと、質問文のプログラムでは引数がintで戻りがdoubleというのがおかしいです。
|
26
26
|
|
27
27
|
動くのですが、doubleで戻す意味がありません。
|
28
|
+
|
29
|
+
|
30
|
+
|
31
|
+
(追記)
|
32
|
+
|
33
|
+
|
34
|
+
|
35
|
+
> intの引数を3つ持ち、全ての値を掛け算した答えをdoubleで返す」 というメソッドを作成しましょう。 という課題
|
36
|
+
|
37
|
+
|
38
|
+
|
39
|
+
あ、ほんとにそういう課題だったのですか⋯
|
40
|
+
|
41
|
+
だとすると、a*b*cではだめです。
|
42
|
+
|
43
|
+
|
44
|
+
|
45
|
+
なぜdoubleで返すか。
|
46
|
+
|
47
|
+
数値の上限ですね。intは約21億が上限ですから、かけ算の結果これを越えて(オーバーフローして)しまい無意味な値を返すことになってしまいます。だからdoubleで返そうと。
|
48
|
+
|
49
|
+
ただし、a*b*cと書いたらintとしてかけ算が行われるので、この時点でオーバーフローが発生します。doubleとしてかけ算させる必要があるのです。
|
50
|
+
|
51
|
+
(double)a * (double)b * (double)c
|
52
|
+
|
53
|
+
と書くとクリアできます。
|
54
|
+
|
55
|
+
doubleとintのかけ算はdoubleとして実行されるという性質がありますので、
|
56
|
+
|
57
|
+
(double)a * b * c
|
58
|
+
|
59
|
+
でも十分ですが。
|