ASP / VBScript - Int () против CInt ()

В чем разница между ASP и VBScript Int()и CInt()?

21.08.2008 18:02:48
4 ОТВЕТА
РЕШЕНИЕ

Функция Int возвращает целую часть указанного числа.

Функция CInt преобразует выражение в тип Integer.

И лучший ответ приходит от MSDN

CInt отличается от функций Fix и Int, которые усекают, а не округляют дробную часть числа. Когда дробная часть равна точно 0,5, функция CInt всегда округляет ее до ближайшего четного числа. Например, 0,5 раунда до 0 и 1,5 раунда до 2.

35
21.08.2008 18:04:43
Боже, интересно, сколько людей знают, что они округляют только ближайшее четное число. Переписывал функцию из vba в python, спасибо за это.
Datanovice 1.09.2019 15:17:02

И самое важное различие (по крайней мере, IME) .... заключается в том, что CInt переполняется на 32 767 .

16
25.08.2008 03:11:03
Большое спасибо за напоминание о том, что int - это 16-битное целое число со знаком!
David A. Gray 11.09.2016 14:29:17
Более поздние версии и среды для VBScript имеют большие точки переполнения. Например, VBScript 15.8 и выше хороши до +/- 2 147 483 647
Mark Goldfain 8.04.2019 16:09:10

Вот еще одно отличие:

Автор сценария:

wscript.echo 40.91 * 100
wscript.echo Int(40.91 * 100)
wscript.echo CInt(40.91 * 100)

результат:

4091
4090   (????)
4091

Есть предположения?

3
11.12.2008 16:38:42
Округление с плавающей точкой. Фактическое значение «40,91» в коде очень близко, но чуть меньше теоретического десятичного значения. CInt округляет до ближайшего, Int усекает.
Thom Smith 28.05.2010 17:22:43

Обычный ответ на этот вопрос - принудительное повторное округление вручную. Эта проблема такая же старая, как Фортран.

Вместо того

a = int(40.91 * 100)

использование

b = 40.91 * 100
a = int(b + 0.5)

Очень старый трюк, все еще полезный в таблицах Excel время от времени.

3
5.12.2012 06:02:21