2016-04-03 4 views
1

совершенно новый для C#. У меня есть следующий код, который вычисляет расстояние и угол между двумя точками. Тем не менее, он не отображает десятичные точки (должно быть до трех знаков после запятой. Я думал, что тип данных с плавающей точкой может обрабатывать десятичные числа?Десятичные точки в C#

например, точка 1 x = 2, точка 1 y = 2, точка 2 x = 1, точка 2 y = 1.

Расстояние рассчитывается как 1, а угол рассчитывается как -1. Расстояние должно быть 1.414 & угол должен быть -135.000 градусов, поэтому его округлить вверх/вниз, если это делает чувство ...

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

'не будет отображать десятичную points' Какой выход вы получите, что вы ожидаете? – Eser

+0

точка 1 x = 2, точка 1 y = 2, точка 2 x = 1, точка 2 y = 1. Расстояние рассчитывается как 1, а угол вычисляется как -1. Расстояние должно быть 1.414, а угол должен быть -135.000 градусов, поэтому его округлить вверх/вниз, если это имеет смысл ... – SamFarr

+0

Нет, это не имеет смысла. Моя математика достаточно, чтобы сделать это. Мой вопрос: «Какой результат вы получаете, что вы ожидаете?» Показывать конкретные образцы ... – Eser

ответ

2
float deltaY = point2Y - point2X; 

у вас есть ошибка в аб ove line. Вам необходимо вычислить:

float deltaY = point2Y - point1Y; 

Кроме того, вам необходимо ввести логику вычисления угла. Формула обсуждается в рамках this answer:

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

Ahhh, что имеет смысл. Решила! Спасибо! Как я могу отобразить вывод до трех знаков после запятой? – SamFarr

+0

@SamFarr: Используйте спецификатор формата [Numeric ("N") (https://msdn.microsoft.com/en-us/library/dwhawy9k (v = vs.110) .aspx # Anchor_6): 'Консоль. WriteLine («Угол между точками: {0: N3}», угол); ' – Douglas

+0

@LutzL: Вы правы; Спасибо что подметил это. Я исправил ответ. – Douglas

Смежные вопросы