2016-04-03 7 views
1

ziemlich neu in C#. Ich habe den folgenden Code, der die Entfernung und den Winkel zwischen zwei Punkten berechnet. Es wird jedoch nicht die Dezimalpunkte anzeigen (muss auf drei Dezimalstellen sein. Ich dachte, dass Float-Datentyp Dezimalzahlen verarbeiten könnte?Dezimalstellen in C#

z. B. Punkt 1 x = 2, Punkt 1 y = 2, Punkt 2 x = 1, Punkt 2 y = 1.

Entfernung wird berechnet als 1 und Winkel wird als -1 berechnet.Distanz sollte 1,414 sein & Winkel sollte -135.000 Grad sein, also ist es wie seine abgerundet sie oben/unten, wenn das macht Sinn ...

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Text; 
using System.Threading.Tasks; 

namespace AngleDistanceCalc 
{ 
    class Program 
    { 
     static void Main(string[] args) 
     { 
      // print welcome message 
      Console.WriteLine("Welcome. This application will calculate the distance between two points and display the angle."); 

      Console.WriteLine("Please enter point 1 X value:"); 
      float point1X = float.Parse(Console.ReadLine()); 

      Console.WriteLine("Please enter point 1 Y value:"); 
      float point1Y = float.Parse(Console.ReadLine()); 

      Console.WriteLine("Please enter point 2 X value:"); 
      float point2X = float.Parse(Console.ReadLine()); 

      Console.WriteLine("Please enter point 2 y value:"); 
      float point2Y = float.Parse(Console.ReadLine()); 

      float deltaX = point2X - point1X; 
      float deltaY = point2Y - point2X; 

      double distance = Math.Sqrt(deltaX * deltaX + deltaY * deltaY); 

      Console.WriteLine("The distance between the points is: {0}", distance); 

      Console.WriteLine("The angle between the points is: {0}", deltaX); 
     } 
    } 
} 
+1

'es wird nicht die Dezimalanzeige points' Was ist die Ausgabe, die Sie bekommen, was erwarten Sie? – Eser

+0

Punkt 1 x = 2, Punkt 1 y = 2, Punkt 2 x = 1, Punkt 2 y = 1. Die Entfernung wird als 1 berechnet und der Winkel wird als -1 berechnet. Die Entfernung sollte 1,414 sein und der Winkel sollte -135.000 Grad betragen, also ist es wie seine abgerundete, wenn das Sinn macht ... – SamFarr

+0

Nein, es macht keinen Sinn. Meine Frage war: "Was ist die Ausgabe, die Sie erwarten, was erwarten Sie?" Zeigen Sie konkrete Beispiele ... – Eser

Antwort

2
float deltaY = point2Y - point2X; 

Sie haben einen Fehler in der ab Obergrenze. Sie müssen berechnen:

float deltaY = point2Y - point1Y; 

Auch müssen Sie Logik für die Berechnung des Winkels einführen. Die Formel wird unter this answer diskutiert:

var angle = Math.Atan2(deltaY, deltaX) * 180/Math.PI; 
Console.WriteLine("The angle between the points is: {0}", angle); 
+0

Ahhh das macht Sinn. Ich habe es gelöst! Vielen Dank! Wie kann ich die Ausgabe auf drei Dezimalstellen anzeigen? – SamFarr

+0

@SamFarr: Verwenden Sie den [Numerischen ("N") Formatbezeichner] (https://msdn.microsoft.com/en-us/library/dwhawy9k (v = vs.110) .aspx # Anchor_6): 'Console. WriteLine ("Der Winkel zwischen den Punkten ist: {0: N3}", Winkel); ' – Douglas

+0

@LutzL: Du hast recht; Danke, dass du das gezeigt hast. Ich habe die Antwort korrigiert. – Douglas