Ошибка переполнения Cint, когда значение превышает 100 000+

Я новичок в программировании, и я столкнулся с некоторыми проблемами с ошибкой переполнения Cint. Всякий раз, когда значение достигает 100 000+, я получаю ошибку переполнения Cint. Это было практическое упражнение во вступлении к классу программирования. Насколько я вижу, я закодировал это точно, как это было сделано на практике, но практика показывает, что значение достигает 300 000. Может ли кто-нибудь объяснить, что я могу делать неправильно?

<script language="VBscript">
Option Explicit
DIM numberofshifts, totalshift1, totalshift2, _
  totalshift3, grandtotal, shiftaverage
numberofshifts=3
totalshift1 = Inputbox("How many widgets during the first shift")
totalshift2 = Inputbox("How many widgets during the second shift")
totalshift3 = Inputbox("How many widgets during the third shift")
grandtotal = cint(totalshift1) + totalshift2 + totalshift3
shiftaverage = grandtotal / numberofshifts
Document.write "The Total of the Three Shifts is " & grandtotal
Document.write "<br>The Average of the Three Shifts is " & shiftaverage
</script>

Ответы

Ответ 1

CInt может обрабатывать между -32,768 и 32,767.

Используйте CLng вместо CInt.

Ссылка MSDN

Ответ 2

Преобразование строковых данных в целые числа может быть выполнено с помощью CInt() CLng() или CDbl(). Важно помнить о размерах ограничений этих типов данных. Различные языки программирования имеют разные ограничения.
Вот ссылка на типы данных VBScript.

Целые числа могут обрабатывать целые числа от -32,768 до 32,767. Длинные могут обрабатывать целые числа от -2,147,483,648 до 2,147,483,647. Удвои могут обрабатывать номера до 1.79769313486232E + 308, (Это большее число, чем число атомов на Солнце, что составляет 1,19 октодециллиона). Они также являются двойной точностью с плавающей точкой; что двойной может также обрабатывать чрезвычайно точные десятичные точки.

grandtotal = cdbl(totalshift1) + totalshift2 + totalshift3 

Это устранит проблему переполнения. Он не будет обрабатывать ошибку, если пользователь вводит не номер, а другую тему.