Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > .NET Frameworks (точка нет фреймворки) > C# (си шарп)
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 26.04.2018, 19:05   #1
Ramzan_95
Пользователь
 
Регистрация: 12.04.2018
Сообщений: 19
По умолчанию Математические функции в C#

я делаю калькулятор, у меня есть математические функции sin, cos, tg, ctg.
Вот код
Код:
 private void buttonSin_Click(object sender, EventArgs e)
        {
            double textBoxString = Convert.ToDouble(textBoxInput.Text);
            textBoxString = Math.Sin(textBoxString * Math.PI / 180);
            textBoxInput.Text = textBoxString.ToString();
        }

        private void buttonCos_Click(object sender, EventArgs e)
        {
            double textBoxStroca = Convert.ToDouble(textBoxInput.Text);
            textBoxStroca = Math.Cos(textBoxStroca * Math.PI / 180);
            textBoxInput.Text = textBoxStroca.ToString();
        }

        private void buttonTan_Click(object sender, EventArgs e)
        {
            double textBoxStroca = Convert.ToDouble(textBoxInput.Text);
            textBoxStroca = Math.Tan(textBoxStroca * Math.PI / 180);
            textBoxInput.Text = textBoxStroca.ToString();
        }
  private void buttonCtan_Click(object sender, EventArgs e)
        {
            double textBoxString = Convert.ToDouble(textBoxInput.Text);
            textBoxString = Math.Cos(textBoxString * Math.PI / 180) / Math.Sin(textBoxString * Math.PI / 180);
            textBoxInput.Text = textBoxString.ToString();
        }
Вроде всё правильно работает как в других калькуляторах, вот только когда градус к примеру у sin 90, ответ должен быть 0, но почему-то выдаёт другой результат. Тоже самое и с другими функциями, везде где ответ должен быть 0, выдаётся непонятное отрицательное, длинное число. Что не так?
Ramzan_95 вне форума Ответить с цитированием
Старый 27.04.2018, 12:15   #2
Скарам
Дружите с Linq ;)
Форумчанин
 
Аватар для Скарам
 
Регистрация: 15.10.2008
Сообщений: 822
По умолчанию

Цитата:
Сообщение от Ramzan_95 Посмотреть сообщение
примеру у sin 90, ответ должен быть 0
Это неправильно.
Для синуса сделай так
Код:
Math.Round( Math.Sin(textBoxString * (Math.PI / 180.0)),8)
1) Делить надо не на 180, а на 180.0
2) Это не отрицательное число, а просто очень маленькое. Поэтому надо округлять, я использовал Math.Round
Не давай организму поблажки, каждый день тренируй его в шашки..
Скарам вне форума Ответить с цитированием
Старый 27.04.2018, 13:51   #3
Ramzan_95
Пользователь
 
Регистрация: 12.04.2018
Сообщений: 19
По умолчанию

Спасибо, а зачем вы восьмёрку в конце дописали?
Ramzan_95 вне форума Ответить с цитированием
Старый 27.04.2018, 14:12   #4
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
Сообщение от Ramzan_95 Посмотреть сообщение
Спасибо, а зачем вы восьмёрку в конце дописали?
округлить до 8-ми десятичных знаков после запятой. (см. Math.Round Method (Decimal, Int32) )
Serge_Bliznykov вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Математические функции SQL dimka123 БД в Delphi 20 05.11.2016 15:25
DBGrid математические функции flouwjke БД в Delphi 0 05.05.2012 14:40
Математические функции в С# надо kybik Помощь студентам 4 12.07.2011 17:15
Математические функции mansmich C# (си шарп) 1 01.03.2011 18:10
Математические действия/функции в C++ Tanilita Общие вопросы C/C++ 11 21.03.2010 19:38