Japanese subtitles

← arithmetic operations2

Get Embed Code
6 Languages

Showing Revision 2 created 10/29/2014 by K2480.

  1. まずテスターをコンパイルして実行すると
    メソッドの実績値はすべてゼロになります
  2. ではamdahlSpeedupから修正しましょう
    現在の戻り値はゼロです
  3. このように書いてみたらどうなるでしょう?
  4. これでテスターを実行すると
    実績値は2.875になりました
  5. しかし期待値は1.6です
    戻って修正した方がよさそうです
  6. 今の状態だと割り算を先に行います
    つまり1÷sとs÷nが先です
  7. 次に真ん中にある足し算と引き算を行います
    これは最初の式では何の意味もなしません
  8. sからnまでのひと固まりは
    分母としてまとまっている必要があり
  9. 1-sは分子としてひと固まりとなるはずです
    ではもう一度やってみましょう
  10. amdahlSpeedupは機能しましたが
    crossRatioは修正が必要です
  11. これも単純にやってみましょう
    上の式を1列に収まるよう書き換えました
  12. この数の値を返し
    コンパイルするとエラーとなります
  13. unexpected type required:class;
    found:valueと表示されました
  14. このエラーが何を意味するか
    分からないと思いますがこれがヒントになります
  15. このように丸括弧のすぐ後ろに
    別の値が続く時には違う意味になるのです
  16. 特にここにa-cのような数式ではなく
    型が来る時には注意してください
  17. 必要なのは掛け算をしたいと示すことです
    分母に対しても同じです
  18. 再びテスターで実行してみましょう
    crossRatioの正しい値は得ていませんね
  19. これは優先順位が等しい演算子が複数あるためです
  20. Javaでは単純に左から右に計算します
  21. (a−c)×(b−d)の答えを
    (b−c)×(a−d)の答えで割る代わりに
  22. (a−c)×(b−d)を(b−c)で割り
  23. そこまで計算した値に(a−d)を掛けているのです
  24. ここで必要なことは分母を1つにまとめることです
  25. 分子もまとめても構いませんが
    あまり違いはありません
  26. 再びコンパイルしてテスターを実行すると
    正しく機能する2つのメソッドが得られました
  27. 次はaverageです これらすべてを足して
    4で割った値を戻してみます
  28. テスターを実行すると一方は機能していますが
    もう一方はうまくいっていません
  29. この2番目のケースを見てみましょう
    テスターの中身を見てみます
  30. うまくいかなかったのは
    3、4、3、3の平均を出そうとした時です
  31. 3.25となるのを期待したのですが
    小数点以下が落ちています
  32. Javaはこの記号を整数部分を示すと認識します
  33. 4は整数ですしa、b、c、dも
    すべて整数だと宣言されているからです
  34. これを修正する方法はいくつかあります
    4を4.あるいは4.0と書きます
  35. これで正しい値が得られます
    またはintをすべてdoubleに書き換えます
  36. この4はdoubleであると特定する必要はありません
  37. コンパイルしてテスターを実行すると
    これも正しい値が得られます
  38. これらの変数のどれかがdouble型だとすると
  39. 括弧の中にある数式全体もdoubleとなり
  40. それを整数で割って出た値が整数になるとは
    限りません 一般的な除法ですね
  41. これは混乱しやすいところです
  42. 私たちから見れば正しいのですが
    コンピュータは正しく読んでくれません
  43. コンパイラも警告してくれません
  44. これがすべてintでdouble型がないとして
    実行すればランタイムエラーとなります
  45. 期待する答えを事前に考えることの
    重要性を示すいい例ですね
  46. ではいくつかの例を計算して
    コードを書いてみましょう