Dados numéricos
A escolha entre os dois tipos de dados numéricos em JScript, dados e dados de ponto flutuante, depende das circunstâncias específicas em que são usados. Também há diferentes maneiras de representar dados integrais e dados de ponto flutuante, literalmente.
O número zero, os números inteiros negativos e números positivos inteiros são inteiros. Eles podem ser representados em base 10 (decimal), base 8 (octal) e base 16 (hexadecimal). A maioria dos números no JScript são escritos em decimal. Para denotar octais inteiros, prefixo-los com um líder 0 (zero). Eles podem conter dígitos de 0 a 7 somente. Um número com um zero à esquerda, que contém os dígitos de 8 e/ou 9 é interpretado como um número decimal. Uso de números octais geralmente não é recomendado.
Para denotar inteiros (hexadecimais) hexadecimais, coloque um líder "0x" (zero e x |X). Eles podem conter dígitos de 0 a 9 e letras de a até F (maiúscula ou minúscula) somente. As letras de À F representam como o único dígitos, 10 a 15 na base 10. Ou seja, 0xF equivale a 15, e 0x10 é equivalente a 16.
Números octais e hexadecimais, que podem ser negativos, não é possível ter uma parte decimal e não podem ser escritos na notação de científica (exponencial).
Os valores de ponto flutuante são os números inteiros com uma parte decimal. Como inteiros, eles podem ser representados literalmente com dígitos seguidos por uma vírgula decimal e mais dígitos. Além disso, eles podem ser expressos em notação científica. Ou seja, uma letra maiúscula ou minúscula e é usado para representar "vezes dez à potência de". Um número que começa com um único 0 e contém um ponto decimal é interpretado como um literal de ponto flutuante decimal e não um literal octal.
Além disso, os números de ponto flutuante no JScript podem representar valores numéricos especiais que tipos de dados não é possível. Estes são:
NaN(não um número). Isso é usado quando uma operação matemática é realizada em dados inadequados, como, por exemplo, seqüências de caracteres ou o valor indefinido.
Infinito. Isso é usado quando um número positivo é muito grande para representar em JScript.
-Infinito (negativo infinito) é usado quando a magnitude de um número negativo é muito grande para representar em JScript.
Positivos e negativos 0. JScript diferencia entre zero positivo e negativo em algumas situações.
Aqui estão alguns exemplos de números de JScript. Observe que um número que começa com "0x" e contém um ponto decimal irá gerar um erro.
Número |
Descrição |
Equivalente decimal |
---|---|---|
,0001, 0,0001, 1e-4, 1.0 e-4 |
Quatro números de ponto flutuante equivalentes. |
0.0001 |
3.45e2 |
Um número de ponto flutuante. |
345 |
42 |
Um inteiro. |
42 |
0378 |
Um inteiro. Embora parece um número octal (começa com um zero), 8 não é um dígito octal válido, portanto, o número é tratado como um decimal. Isso produz um aviso de nível 1. |
378 |
0377 |
Um inteiro octal. Observe que, embora pareça ser apenas uma menor do que o número acima, seu valor real é bem diferente. |
255 |
0.0001, 00.0001 |
Um número de ponto flutuante. Embora isso começa com um zero, não é um número octal porque ela tem um ponto decimal. |
0.0001 |
0Xff |
Um inteiro hexadecimal. |
255 |
0x37CF |
Um inteiro hexadecimal. |
14287 |
0x3e7 |
Um inteiro hexadecimal. Observe que a letra e não é tratado como exponenciação. |
999 |
0x3.45e2 |
Este é um erro. Números hexadecimais não podem ter partes decimais. |
N/D (erro do compilador) |
Variáveis de qualquer tipo de dados podem representar apenas um intervalo finito de números. Se você tentar atribuir um literal numérico que é muito grande ou muito pequeno para um tipo de dados integral, será gerado um erro de incompatibilidade de tipo em tempo de compilação. Para obter mais informações, consulte Resumo do tipo de dados.
Tipos de dados de literais
Na maioria das situações, os tipo de dados JScript interpreta literais numéricos como é irrelevante. No entanto, quando os números forem muito grandes ou muito precisas, esses detalhes são importantes.
Literais de inteiro na JScript podem representar o tipo de dados int, longo, ulong, decimal, ou double, dependendo do tamanho do literal e seu uso. Literais no intervalo da int (-2147483648 a 2147483647) do tipo são interpretados como o tipo de int. Literais fora do intervalo, mas dentro do intervalo da longo (-9223372036854775808 a 9223372036854775807) do tipo são interpretados como longo. Literais fora do intervalo, mas dentro do intervalo da ulong (9223372036854775807 para 18446744073709551615) do tipo são interpretados como ulong. Todos os outros literais de inteiro são interpretados como o tipo de double, que implica uma perda de precisão. Uma exceção para a última regra é que o literal será interpretado como um decimal se a literal imediatamente é armazenada em uma variável ou constante digitados como decimal, ou se ele é passado para uma função que é digitada para receber um decimal.
Um literal de ponto flutuante de JScript é interpretado como o tipo de dados double, a menos que o literal imediatamente é usado como decimal (como literais de inteiro), caso em que o literal é interpretado como um decimal. O decimal não pode representar o tipo de dados NaNpositivo infinito, ou negativo infinito.