1

Вот код:

static void Main(string[] args)
{
    do
    {
        double angle = Convert.ToDouble(Console.ReadLine());
        var radians = angle * Math.PI / 180;
        double x = Math.Cos(radians);
        double y = Math.Sin(radians);
        Console.WriteLine("Radians: " + radians);
        Console.WriteLine("Cos: " + x);
        Console.WriteLine("Sin: " + y);
    }
    while (Console.ReadKey().Key != System.ConsoleKey.Escape);
}

Вывод:

90
Radians: 1,5707963267949
Cos: 6,12303176911189E-17
Sin: 1

Делаю на WPF, хочу получать координаты, без округления не получается, может быть есть элегантнее решения?

double radius = Double.Parse(raduisbox.Text);
double angle = Double.Parse(anglebox.Text);
var radians = angle * Math.PI / 180;
double x = radius * Math.Cos(radians);
double y = radius * Math.Sin(radians);
x_coord.Text = x.ToString();
y_coord.Text = y.ToString();

Изменил с округлением, вроде работает

double x = radius * Math.Round(Math.Cos(radians), 3);
double y = radius * Math.Round(Math.Sin(radians), 3);
laika
  • 11
  • 2
    какое из приведенных значений Вас не устраивает? –  Aug 28 '17 at 03:36
  • Сколько вам знаков надо? Если меньше 15, то вы можете округлить и косинус будет равен 0, если больше, то нужно писать математику самому, т.к double вам уже недостаточно – Андрей NOP Aug 28 '17 at 03:39
  • Подскажите как написать правильно, что бы косинус равнялся 0. – laika Aug 28 '17 at 03:45
  • @laika, 6,12303176911189E-17 - это примерно 6 * 10 в -17 степени (т.е. 0.000(много нулей)0006123...). Это достаточно близко к нулю практически для любых целей, а ровно 0.0 вы все равно не получите. – insolor Aug 28 '17 at 04:57
  • 1
    Выводите число только с той точность, которая требуется, например, три знака после запятой: Console.WriteLine("Cos: {0:0.###}", x); – Андрей NOP Aug 28 '17 at 05:03
  • 1
    Вообще, смотря как вы будете потом эти числа использовать. Если это будут координаты при рисовании, то ничего специально округлять не нужно, все равно при рисовании все округлится до целых пикселей. – insolor Aug 28 '17 at 10:17
  • если для вычислений, то округлять до заданной точности обязательно, иначе можете где-нибудь случайно знак поменять, умножая на отрицательный "почти ноль" и долго искать как вышло (-1,5) землекопа и что с ними теперь делать. – rdorn Aug 28 '17 at 11:24

0 Answers0