回答編集履歴

1

追記

2016/09/03 05:31

投稿

yuba
yuba

スコア5568

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
+ でも十分ですが。