2008-08-21 6 views

ответ

32

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

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

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

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

16

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

+0

Большое спасибо за напоминание, что int является подписанным 16 BIT целым числом! – 2016-09-11 14:29:17

3

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

Сценарий:

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

результат:

4091 
4090 (????) 
4091 

Любые мысли?

+1

Сгибание с плавающей точкой. Фактическое значение «40,91» в коде очень близко, но меньше теоретического десятичного значения. CInt округляется до ближайшего, Int усекает. – 2010-05-28 17:22:43

3

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

Вместо

a = int(40.91 * 100) 

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

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

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