2017-11-01 28 views
0

Javaの宿題の場合、単位円のπ/ 4の各間隔でcos値とsin値を計算して印刷する必要があります。しかし、丸め技法を使用していましたが、命令はdouble doubleNameとdoubleName = Math.round(doubleName * 100)/ 100.0の割り当てを使用して提供されます。丸めが効いていない

Radians: (cos, sin) 
0.0: 1.0, 0.0 
0.79: 0.7, 0.71 
1.57: 0.0, 1.0 
2.36: -0.71, 0.7 
3.14: -1.0, 0.0 
3.93: -0.7, -0.71 
4.71: 0.0, -1.0 
5.5: 0.71, -0.71 

しかし、私の出力は次のとおりです:

結果がでなければなりません

Radians: (cos, sin) 
0.0: 1.0, 0.0 
0.79: 0.7, 0.71 
1.58: -0.01, 1.0 
2.37: -0.72, 0.7 
3.16: -1.0, -0.02 
3.95: -0.69, -0.72 
4.74: 0.03, -1.0 
5.53: 0.73, -0.68 

マイコード:

public class UnitCircle extends ConsoleProgram { 
    public void run() { 
    System.out.println("Radians: (cos, sin)"); 
    for (double i = 0; i <= 2 * Math.PI; i += Math.PI/4) { 
     i = Math.round(i * 100.0)/100.0; 
     double x = Math.cos(i); 
     x = Math.round(x * 100.0)/100.0; 
     double y = Math.sin(i); 
     y = Math.round(y * 100.0)/100.0; 
     System.out.println(i + ": " + x + ", " + y); 
    } 

    } 
} 
+1

ループ内で 'i'を変更してから、ループに' Math.PI'を追加します。それは正確ではありません。 'i'の丸められた値を代入するには2番目の変数が必要です。 (一般的に、ループ内のループカウンタを変更しないでください。) – Evert

答えて

1

ないラウンドiの計算では、唯一のためのそれのラウンドを行います表示。

for (double i = 0; i <= 2 * Math.PI; i += Math.PI/4) { 
      double x = Math.cos(i); 
      x = Math.round(x * 100.0)/100.0; 
      double y = Math.sin(i); 
      y = Math.round(y * 100.0)/100.0; 
      System.out.println(Math.round(i*100)/100.0 + ": " + x + ", " + y); 
    } 
0
あなたのループは100%正しいが、出力の誤差が原因最初所与loop.2nd工程からiの値を抽出する必要がありloop.You後に書かれた2つのライン発生さ

:書き込みmath.cos ()またはmath.sin()を使用して結果を切り上げ、適切な答えを得るために結果を切り上げます。最初に共有したコードは、丸め値を見つけ出し、その結果として出力のcos/sinを求めます正解からかなり外れてしまい、結果が間違ってしまうことになります。すでに他の人と共有しているので、コードを共有する必要はなく、彼はあなたに質問の正しい解を提供しました。あなた自身のエラーを見つけてコードをデバッグできるように、あなたのコードについての適切なフィードバックを与えるための質問。 ありがとうございます。

関連する問題