Вообще программист должен давать отчет своим действиям. Это как в жизни - пошел в магазин, купил пылесос, а на кассе выяснилось, что не хватает денег на него. Извечный вопрос - что делать
Извечный ответ - перед покупкой проверять, хватает ли денег. А Вы пытаетесь пойти на грабеж - денег не хватает, но попыток пройти кассу с пылесосом все равно не оставляете
Я думаю, что перед тем как писать программу, нужно понимать, какие типы данных в ней использовать, не ужели нужна такая точность как long double? Как правило хватает double, а то и float... Да и с приведением типов из вещественного в целое так же говорит о слабо проработанном алгоритме. Есть книга хорошая Бьерн Страуструпа (основателя С++), называется Язык программирования С++, там как раз говорится о подборе типов данных. Прочитайте, очень полезная книга.