![]() |
|
Модераторы: Partizan, gambit |
![]()
|
|
| sulyco |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 12 Регистрация: 11.12.2013 Репутация: нет Всего: нет |
Консольное приложение. Приведенный расчет - часть другой программы. Результирующие переменные при выполнении цикла должны стремиться к своим значениям. Одна (W2) послушно ползет к своему значению 5,82. W1 с 17-го шага отпрыгивает и далее ведет себя совершенно не понятно. Построил расчет в экселе - все сходится. Подскажите в чем проблема? ПО результатам эксела переполнения переменных быть не должно, а расчет скривился...
В делфи такой расчет работает, правда с типом Extended, который поддерживает диапазон от 3.37 х 10(-4932) до 1.18 x 10(4932). Поэтому подумалось о переполнении double Это сообщение отредактировал(а) sulyco - 2.2.2014, 14:13 |
|||
|
||||
| jonie |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 5613 Регистрация: 21.8.2005 Где: Владимир Репутация: 22 Всего: 118 |
и ? мы чем вам помочь должны?
-------------------- Что-то не поняли? -> Напейтесь до зеленых человечков... эта сверхцивилизация Вам поможет... |
|||
|
||||
| sulyco |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 12 Регистрация: 11.12.2013 Репутация: нет Всего: нет |
помощь может заключаться в объяснении разного поведения расчета для двух случаев исходных данных. Действительно ли "опрокинулась" переменная? Как ведет себя расчет на другом компе? А может это от каких-то настроек зависит?
Ну не знаю. Эксел считает, а NET -не может. Так бывает? |
|||
|
||||
| jonie |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 5613 Регистрация: 21.8.2005 Где: Владимир Репутация: 22 Всего: 118 |
Так бывает, да. Особенно если перенесено неправильно.... но мы не знаем где правильно, конечно.
-------------------- Что-то не поняли? -> Напейтесь до зеленых человечков... эта сверхцивилизация Вам поможет... |
|||
|
||||
| Экскалупатор |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1746 Регистрация: 1.4.2009 Где: г. Минск Репутация: 11 Всего: 24 |
MSDN Double
прочти раздел про точность и представление десятичных дробей в двоичном виде, отсюда часто возникают нестыковки. Да и хотелось бы больше информации о том что должно получаться в приведенном расчете, а не догадываться что же должно произойти, а что происходит. |
|||
|
||||
| sulyco |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 12 Регистрация: 11.12.2013 Репутация: нет Всего: нет |
Спасибо всем за участие.
Разбирался с составляющими по отдельности. Обнаружил, что "кривит" факториал. Начиная с позиции 13!. Хотя "вместимость" int'а вроде и не превышает. Попытался "ручками" посмотреть. Начал вбивать формулу типа int f=1*2*3*4... До позиции *12 всё было хорошо. При простановке *13 строчка подчеркнулась красным и по наведению курсора выползло сообщение "Переполнение при выполнении операции во время компиляции в режиме с проверкой" (компилятор - студия2010) Замена int на long результатов не дала. Помогла замена типа факториала Fact с int на double, старт расчета факториала начал с дублёвой 0,000001, что позже компенсировал в дальнейшем расчете. Так, что будьте бдительны при применении простейшей, казалось бы функции, факториал. Отмечаю вопрос решенным. |
|||
|
||||
| Экскалупатор |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1746 Регистрация: 1.4.2009 Где: г. Минск Репутация: 11 Всего: 24 |
переполнение при вычислении факториала.
исправь:
Добавлено через 50 секунд чорт, пока печатал и смотрел уже появился ответ... ну главное что проблема решилась ))) удачи |
|||
|
||||
![]()
|
| Прежде чем создать тему, посмотрите сюда: | |
|
|
Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов. Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :) Так же не забывайте отмечать свой вопрос решенным, если он таковым является :) Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, THandle. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Общие вопросы по .NET и C# | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |