Ограничения диапазона...43
Второй проблемой переменной типа int является ограниченный диапазон возможных её значений. Максимальным значением обычной целочисленной переменной является число 2147483647, минимальным — -2147483648, т.е. общий диапазон — около 4 млрд. чисел [ 6 ] .

«Два миллиарда — число весьма большое, чтобы быть достаточным для большинства применений. Тем не менее есть множество задач, где этого недостаточно. Например, ваш компьютер может иметь тактовую частоту, превышающую 2 ГГц ( приставка Г — Гига — как раз и обозначает миллиард ).»
[ Советы ]
С++ позволяет объявлять целые числа как беззнаковые, что означает, что они не могут быть отрицательны. Целое число типа unsigned int может принимать значения от 0 до 4294967295, что иногда облегчает ситуацию.

«Вы можете объявить переменную просто какunsigned , опустив объявлениеint , которое подразумевается неявно.»
[ Советы ]
__________
6Вообще говоря, диапазон значений типа int определяется множеством факторов — в первую очередь компилятором, на выбор типа int которого оказывает огромное влияние тип компьютера, поэтому считать определённым раз и навсегда, что диапазон значений int простирается от -2 32до +2 32-1, нельзя. — Прим. ред.
_________________
43 стр. Глава 2. Премудрости объявления переменных
Решение проблемы усечения дробной части...44
Рассмотренные особенности переменных типа int делают невозможным их использование в некоторых приложениях. Но, к счастью, С++ умеет работать и с десятичными числами, которые могут иметь ненулевую дробную часть ( математики называют их действительными числами ) . Используя действительные числа, можно избежать большинства перечисленных проблем. Заметьте, что десятичные числа могут иметь ненулевую дробную часть, а могут и не иметь, оставаясь действительными. В С++ число 1.0 такое же действительное число, как и 1.5. Эквивалентным им целым числом является 1. Десятичные числа могут также быть отрицательны, например, -2.3.
В С++ действительные числа определены как числа с плавающей точкой, или просто double ( что означает "двойной" точности; в С++ есть действительные числа и одинарной точности, но это экзотика, о которой мы не будем говорить ). Используя выражение "с плавающей точкой", имеют в виду, что десятичную запятую ( или используемую вместо неё в программах точку ) в десятичных числах можно перемещать вперёд и назад настолько, насколько этого требуют вычисления. Действительные переменные объявляются так же, как и переменные типа int :
double dValue ;
Начиная с этой строки, во всей остальной части программы переменная dValue может принимать значения типа double. Тип уже объявленной переменной изменить нельзя: dValue является действительной переменной и останется ею до конца программы. Рассмотрим, как решается присущая целочисленным переменным проблема отбрасывания дробной части. Для этого в объявлении все переменные определим как действительные ( тип double ):
double dValue ;
dValue = 1.0/3.0 + 2.0/3.0 + 2.0/3.0 ;
Это эквивалентно выражению
dValue = 0.333... + 0.666... + 0.666... ;
которое даёт значение
dValue = 1.666... ;

«Я записал значение 1.666... как число с бесконечным числом шестёрок, однако на самом деле такая запись по сути невозможна в силу того, что имеется предел количества цифр, которое может быть в переменной типаdouble .»
[ Атас! ]

«На прилагаемом компакт-диске в папкеCpp_Programs\Chap02 программыIntAverage иFloatAverage демонстрируют разобранные здесь примеры вычисления среднего значения.»
[ Диск ]
//
/* IntAverage — среднее 3 чисел, используя целочисленную арифметику. */
/* Сперва сумма трёх отношений */
/* ( сумма каждого числа разделённого на 3), */
/* второе разделить сумму трёх чисел на 3. */
Читать дальше