Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

RusFAQ.ru: Программирование на Basic / VBA


Хостинг Портала RusFAQ.ru:
MosHoster.ru - Профессиональный хостинг на Windows 2008

РАССЫЛКИ ПОРТАЛА RUSFAQ.RU

/ КОМПЬЮТЕРЫ И ПО / Языки программирования / Basic/VBA

Выпуск № 807
от 22.10.2008, 14:35

Администратор:Калашников О.А.
В рассылке:Подписчиков: 248, Экспертов: 21
В номере:Вопросов: 1, Ответов: 1

Нам важно Ваше мнение об этой рассылке.
Оценить этот выпуск рассылки >>


Вопрос № 147537: Здраствуйте експерты, у меня не большая проблемка. В програмке идет математическая функция s_in1 = ![S_EM] * s_in5 - получается результат 2,48034248894527E+216 s_in2 = ![S_EM2] * s_in3 - - получается результат 1,06681343608367E-46 после ето...

Вопрос № 147.537
Здраствуйте експерты, у меня не большая проблемка. В програмке идет математическая функция
s_in1 = ![S_EM] * s_in5 - получается результат 2,48034248894527E+216
s_in2 = ![S_EM2] * s_in3 - - получается результат 1,06681343608367E-46
после етого
c_in1 = s_in1 / s_in2
c_in2 = c_in1 ^ (1 / ii)
в итоге викидаэт ошибку
Run-time error '6'
Overfloow
Как можно заокруглить эти числа до 3 знаков после комы, или вообще што можна зделать чтоб оно нормально считало?
Заранее благодарен.
Отправлен: 17.10.2008, 14:18
Вопрос задал: Konovalov Mykola (статус: Посетитель)
Всего ответов: 1
Мини-форум вопроса >>> (сообщений: 1)

Отвечает: AlexanderZh
Здравствуйте, Konovalov Mykola!
Вы представляете что такое 2.48... умножить на 10 в 216 степени? Сдвиньте точку на 216 позиций вправо...
Теперь разберем 1.066... умножить на 10 в -46 степени... Сдесь точку нужно сдвинуть на 46 позиций влево...
А теперь делим это астрономическое число на другое, приближающееся к нулю... в результате переполнение...

Если у меня остались хоть крохи школьных знаний по математике, то смею предположить результат операции
2.48034248894527E+216 / 1.06681343608367E-46 = 2.3250011717613361142170026131199E+262 (могу ошибатся в правильности расчета)

По поводу округления: Первое число и так не содержит дробной части, второе при округлении даст ноль.

Добавлено позже
Хотя, немного подумав пришел к выводу...
Переменные типа Double (числа с плавающей точкой двойной точности) сохраняются как 64-разрядные (8-байтовые) числа с плавающей точкой стандарта IEEE в диапазоне от -1,79769313486232E308 до -4,94065645841247E-324 для отрицательных значений и от 4,94065645841247E-324 до 1,79769313486232E308 для положительных значений.
Так что объявите все переменные, которые используете, как Double и все должно сработать....

В приложении кусок рабочего кода

Приложение:

---------
Плохому танцору - один раз отрежь...

Ответ отправил: AlexanderZh (статус: Специалист)
Ответ отправлен: 17.10.2008, 14:54


Вы имеете возможность оценить этот выпуск рассылки.
Нам очень важно Ваше мнение!
Оценить этот выпуск рассылки >>

Отправить вопрос экспертам этой рассылки

Приложение (если необходимо):

* Код программы, выдержки из закона и т.п. дополнение к вопросу.
Эта информация будет отображена в аналогичном окне как есть.

Обратите внимание!
Вопрос будет отправлен всем экспертам данной рассылки!

Для того, чтобы отправить вопрос выбранным экспертам этой рассылки или
экспертам другой рассылки портала RusFAQ.ru, зайдите непосредственно на RusFAQ.ru.


Форма НЕ работает в почтовых программах The BAT! и MS Outlook (кроме версии 2003+)!
Чтобы отправить вопрос, откройте это письмо в браузере или зайдите на сайт RusFAQ.ru.


© 2001-2008, Портал RusFAQ.ru, Россия, Москва.
Авторское право: ООО "Мастер-Эксперт Про"
Техподдержка портала, тел.: +7 (926) 535-23-31
Хостинг: "Московский хостер"
Поддержка: "Московский дизайнер"
Авторские права | Реклама на портале

∙ Версия системы: 5.6 от 14.10.2008

Яндекс Rambler's Top100
RusFAQ.ru | MosHoster.ru | MosDesigner.ru
RusIRC.ru | Kalashnikoff.ru | RadioLeader.ru

В избранное