2008-08-21 36 views

Respuesta

32

La función Int devuelve la parte entera de un número especificado.

La función CInt convierte una expresión a tipo entero.

Y la mejor respuesta viene de MSDN

CInt difiere de la corrección y funciones Int, que truncan, en lugar de redonda, la parte fraccionaria de un número. Cuando la parte fraccionaria es exactamente 0.5, la función CInt siempre la redondea al número par más cercano. Por ejemplo, 0.5 rondas a 0 y 1.5 rondas a 2.

16

Y, la diferencia más importante (IME, al menos) ... es esa CInt overflows at 32,767.

+0

Muchas gracias por el recordatorio de que int es un entero con signo 16 BIT. –

3

Aquí es otra diferencia:

Guión:

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

resultado:

4091 
4090 (????) 
4091 

¿Alguna idea?

+1

Redondeo de punto flotante. El valor real de "40.91" en el código es extremadamente cercano, pero apenas inferior al valor decimal teórico. CInt redondea al más cercano, Int trunca. –

3

La respuesta habitual para este problema es forzar manualmente un redondeo. Este problema es tan antiguo como FORTRAN.

En lugar de

a = int(40.91 * 100) 

Uso

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

muy viejo truco, siendo útil en hojas de cálculo Excel de vez en cuando.