Модераторы: Partizan, gambit
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Вычисления с повышенной точностью в C# 
:(
    Опции темы
Alyonka_v
Дата 16.2.2010, 17:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 21
Регистрация: 23.12.2006
Где: Latvia, Daugavpil s

Репутация: нет
Всего: нет



Здравствуйте! Нужно выполнить вычисление используя переменные типа Decimal (нужна высокая точность вычилений, примерно 1е-18), но функция Math.Cos либо их не поддерживает, либо я просто не знаю как это реализовать. Может в С# для вычисления Cos можно использовать другую функцию? 
Код

static decimal f(decimal x, decimal y)
{
decimal fx;
fx = 10 * Math.Cos(5 * x) - 2 * y;
return fx;
}

При комплиляции выдается ошибка: Наиболее подходящий перегруженный метод для "System.Math.Cos(double)" имеет несколько недопустимых аргументов
PM MAIL WWW ICQ   Вверх
Heinzz
Дата 16.2.2010, 18:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 381
Регистрация: 12.12.2008
Где: .net

Репутация: 5
Всего: 9



просто аргумент должен быть именно double. Почему вы не хотите double использовать?


--------------------
user posted image
PM MAIL   Вверх
Alyonka_v
Дата 16.2.2010, 18:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 21
Регистрация: 23.12.2006
Где: Latvia, Daugavpil s

Репутация: нет
Всего: нет



Мне не достаточно точности double (15-16 digits), мне нужна точность не мене 18 цифр за запятой, поддерживает ли такую точность какой-нибудь тип данных в C#?
Применив Math.Cos((double)5*x) возникает ошибка: Оператор "*" не может применяться к операндам типа "double" и "decimal".
Через ряд Тейлора тоже получается только с точностью 16 знаков, не больше, а мне этого мало.
PM MAIL WWW ICQ   Вверх
DagadaRed
Дата 16.2.2010, 18:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 1
Регистрация: 12.5.2008

Репутация: нет
Всего: нет



Почитай у Кнута, у него есть алгоритмы работы больших чисел. 
PM MAIL   Вверх
Heinzz
Дата 16.2.2010, 20:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 381
Регистрация: 12.12.2008
Где: .net

Репутация: 5
Всего: 9



Цитата(Alyonka_v @  16.2.2010,  18:23 Найти цитируемый пост)
Применив Math.Cos((double)5*x) возникает ошибка: Оператор "*" не может применяться к операндам типа "double" и "decimal".

Math.Cos((double)(5 * x))


--------------------
user posted image
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
mr.DUDA
THandle

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.
Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :)
Так же не забывайте отмечать свой вопрос решенным, если он таковым является :)


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, THandle.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Общие вопросы по .NET и C# | Следующая тема »


 




[ Время генерации скрипта: 0.0675 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.