Вопрос № 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 знаков после комы, или вообще што можна зделать чтоб оно нормально считало? Заранее благодарен.
Отвечает: 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