ASP/VBScript - Int() vs CInt()
-
09-06-2019 - |
Pergunta
Qual é a diferença em ASP/VBScript entre Int()
e CInt()
?
Solução
A função Int retorna a parte inteira de um número especificado.
A função CInt converte uma expressão para o tipo Integer.
E a melhor resposta vem de MSDN
CInt difere das funções Fix e Int, que truncam, em vez de arredondar, a parte fracionária de um número.Quando a parte fracionária é exatamente 0,5, a função CInt sempre arredonda para o número par mais próximo.Por exemplo, 0,5 rodadas para 0 e 1,5 rodadas para 2.
Outras dicas
E a diferença mais importante (IME, pelo menos)....é que CInt transborda em 32.767.
Aqui está outra diferença:
Roteiro:
wscript.echo 40.91 * 100
wscript.echo Int(40.91 * 100)
wscript.echo CInt(40.91 * 100)
resultado:
4091
4090 (????)
4091
Alguma ideia?
A resposta usual para esse problema é forçar manualmente um rearredondamento.Este problema é tão antigo quanto o FORTRAN.
Em vez de
a = int(40.91 * 100)
Usar
b = 40.91 * 100
a = int(b + 0.5)
Truque muito antigo, ainda útil em planilhas de Excel de vez em quando.