Задать вопрос
@romajke

Как избежать переполнения типа данных?

while ( x >= y)
{
//...
//code
//...
double x = a/b;
}

Проблема в том, что при делении a/b получается число с очень большим количеством знаков после запятой. И с каждой итерацией цикла количество знаков увеличивается. Мне же в принципе такая огромная точность не нужна, и вполне бы хватило 6-8 знаков после запятой. Можно ли как то избежать переполнения типа данных, например ограничив количество знаков после запятой при вычислениях? (это единственное что приходит мне в голову, но я не знаю возможно ли это) Или каким то другим способом?
  • Вопрос задан
  • 1714 просмотров
Подписаться 1 Простой Комментировать
Ответ пользователя Иван Корюков К ответам на вопрос (3)
@MadridianFox
Web-программист, многостаночник
Точность вычислений вы устанавливаете выбирая тип данных - float или double. Не важно как сильно вы раздробили число, количество занимаемой им памяти не меняется. Т.е. вам нужно "обрезать" его только при выводе, чтобы лишние цифры глаза не мозолили.

Обрезание производлится по некоторым правилам, которые вы наверняка учили в школе, и называть это надо "округление". Т.е. вам достаточно набрать в гугле "Как округлить число до нужного знака после запятой в Си".

Переполнением в Си называется случай, когда вы увеличивая значение переменной достигаете предела и следующее увеличение обнуляет переменную или меняет её знак.
Ответ написан
Комментировать