В чем разница в ASP/VBScript между Int()
и CInt()
?
ASP/VBScript - Int() vs CInt()
Ответ 1
Функция Int возвращает целочисленную часть указанного числа.
Функция CInt преобразует выражение в тип Integer.
И лучший ответ исходит из MSDN
CInt отличается от функций Fix и Int, которые усекают, а не округляют, дробную часть числа. Когда дробная часть равна 0,5, функция CInt всегда округляет ее до ближайшего четного числа. Например, от 0,5 раундов до 0 и от 1,5 раундов до 2.
Ответ 2
И самое главное отличие (IME, по крайней мере).... заключается в том, что CInt переполняется на 32 767.
Ответ 3
Вот еще одно отличие:
Script:
wscript.echo 40.91 * 100
wscript.echo Int(40.91 * 100)
wscript.echo CInt(40.91 * 100)
результат:
4091
4090 (????)
4091
Любые мысли?
Ответ 4
Обычный ответ для этой проблемы - принудительное повторное округление вручную. Эта проблема так же стара, как FORTRAN.
Вместо
a = int(40.91 * 100)
Использование
b = 40.91 * 100
a = int(b + 0.5)
Очень старый трюк, по-прежнему полезный в электронных таблицах Excel время от времени.