В чем разница в ASP/VBScript между Int()
и CInt()
?ASP/VBScript - Int() vs CInt()
ответ
Функция Int возвращает целую часть указанного числа.
Функция CInt преобразует выражение целого типа.
И лучший ответ приходит от MSDN
CInt отличается от Fix и Int функции, которые усечь, а не круглые, то дробная часть числа. Когда дробная часть равна 0,5, функция CInt всегда округляет ее до ближайшего четного числа. Например, 0,5 раунда до 0 и 1,5 раунда до 2.
И самое важное отличие (IME, как минимум) .... заключается в том, что CInt overflows at 32,767.
Вот еще одно отличие:
Сценарий:
wscript.echo 40.91 * 100
wscript.echo Int(40.91 * 100)
wscript.echo CInt(40.91 * 100)
результат:
4091
4090 (????)
4091
Любые мысли?
Сгибание с плавающей точкой. Фактическое значение «40,91» в коде очень близко, но меньше теоретического десятичного значения. CInt округляется до ближайшего, Int усекает. – 2010-05-28 17:22:43
Обычный ответ на этот вопрос - это принудительное повторное округление вручную. Эта проблема столь же стара, как и FORTRAN.
Вместо
a = int(40.91 * 100)
Использование
b = 40.91 * 100
a = int(b + 0.5)
Очень старый трюк, еще полезно в электронных таблицах Excel, время от времени.
Большое спасибо за напоминание, что int является подписанным 16 BIT целым числом! – 2016-09-11 14:29:17