teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

1

追記

2016/09/03 05:31

投稿

yuba
yuba

スコア5570

answer CHANGED
@@ -11,4 +11,20 @@
11
11
 
12
12
  などと組みますね。
13
13
  あと、質問文のプログラムでは引数がintで戻りがdoubleというのがおかしいです。
14
- 動くのですが、doubleで戻す意味がありません。
14
+ 動くのですが、doubleで戻す意味がありません。
15
+
16
+ (追記)
17
+
18
+ > intの引数を3つ持ち、全ての値を掛け算した答えをdoubleで返す」  というメソッドを作成しましょう。 という課題
19
+
20
+ あ、ほんとにそういう課題だったのですか⋯
21
+ だとすると、a*b*cではだめです。
22
+
23
+ なぜdoubleで返すか。
24
+ 数値の上限ですね。intは約21億が上限ですから、かけ算の結果これを越えて(オーバーフローして)しまい無意味な値を返すことになってしまいます。だからdoubleで返そうと。
25
+ ただし、a*b*cと書いたらintとしてかけ算が行われるので、この時点でオーバーフローが発生します。doubleとしてかけ算させる必要があるのです。
26
+ (double)a * (double)b * (double)c
27
+ と書くとクリアできます。
28
+ doubleとintのかけ算はdoubleとして実行されるという性質がありますので、
29
+ (double)a * b * c
30
+ でも十分ですが。