Tipos básicos: números – Kotlin

Números

TipoAncho de bits
Double64
Float32
Long64
Int32
Short16
Byte8

Kotlin maneja los números de una manera cercana a Java, pero no exactamente igual. Por ejemplo, no hay conversiones de ampliación implícitas para números, y los literales son ligeramente diferentes en algunos casos.

Hay que tener en cuenta que los carácteres no son números en Kotlin.

Constantes

  • Decimales 123
    • Los largos están marcados con una letra mayúscula L:123L
  • Hexadecimales: 0x0F
  • Binarios: 0b00001011

NOTA: los literales octales no son compatibles.

Kotlin también admite una notación convencional para números de punto flotante:

  • Dobles: por defecto 123.5,123.5e10
  • Los flotantes están etiquetados por fF:123.5f

Como novedad respecto a java, pueden usarse guiones bajos para separarlos cuando estos sean muy largos para dejarlos más visibles:

val oneMillion = 1_000_000
val creditCardNumber = 1234_5678_9012_3456L
val socialSecurityNumber = 999_99_9999L
val hexBytes = 0xFF_EC_DE_5E
val bytes = 0b11010010_01101001_10010100_10010010 

Conversiones

Los tipos más pequeños NO se convierten implícitamente a tipos más grandes. Esto significa que no podemos asignar un valor de tipo Bytea una variable Int sin una conversión explícita.

Cada tipo de número admite las siguientes conversiones:

  • toByte(): Byte
  • toShort(): Short
  • toInt(): Int
  • toLong(): Long
  • toFloat(): Float
  • toDouble(): Double
  • toChar(): Char

La ausencia de conversiones implícitas rara vez se nota porque el tipo se deduce del contexto y las operaciones aritméticas se sobrecargan para las conversiones apropiadas, por ejemplo:

val l = 1L + 3 // Long + Int => Long

Operaciones

Kotlin admite el conjunto estándar de operaciones aritméticas sobre números, que se declaran como miembros de clases apropiadas

Lista completa de operaciones bitwise o operaciones bit a bit (disponible para IntLongsolo):

  • shl(bits) – signed shift left (Java’s <<)
  • shr(bits) – signed shift right (Java’s >>)
  • ushr(bits) – unsigned shift right (Java’s >>>)
  • and(bits) – bitwise and
  • or(bits) – bitwise or
  • xor(bits) – bitwise xor
  • inv() – bitwise inversion

Ejemplo:

val x = (1 shl 2) and 0x000FF000

Comparación de números

  • Controles de igualdad: a == bya != b
  • Los operadores de comparación: a < ba > ba <= b,a >= b
  • Instanciación rango de alcance y comprobaciones: a..bx in a..b,x !in a..b

  • NaN es considerado igual a sí mismo
  • NaN se considera mayor que cualquier otro elemento incluido POSITIVE_INFINITY
  • -0.0 se considera menos que 0.0

No votes yet.
Please wait...

Deja un comentario

marchurtos
A %d blogueros les gusta esto: