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