[ Web Proxy ]
URL:
Viewing: https://developer.mozilla.org/es/docs/Web/JavaScript/Guide/Numbers_and_strings [Back]  [Original]

Nmeros y fechas - JavaScript | MDN

Esta pgina ha sido traducida del ingls por la comunidad. Aprende ms y nete a la comunidad de MDN Web Docs.

View in English Always switch to English

Nmeros y fechas

Este captulo presenta los conceptos, objetos y funciones que se utilizan para trabajar y realizar clculos utilizando nmeros y fechas en JavaScript. Esto incluye el uso de nmeros escritos en varias bases, incluyendo decimal, binario y hexadecimal, as como el uso del objeto global Math para realizar una amplia variedad de operaciones matemticas con nmeros.

In this article

Nmeros

En JavaScript, los nmeros se implementan en Formato en coma flotante de doble precisin de 64 bits IEEE 754 (es decir, un nmero entre 21022 y 2+1023, o aproximadamente 10308 a 10+308, con una precisin numrica de 53 bits). Los valores enteros hasta 253 - 1 se pueden representar con exactitud.

Adems de poder representar nmeros de punto flotante, el tipo number tiene tres valores simblicos: +Infinity, -Infinity y NaN (Not-a-Number, no es un nmero).

Una adicin ms reciente a JavaScript es el BigInt que te permite representar nmeros enteros que pueden ser muy grandes. Sin embargo, existen advertencias para usar BigInt; por ejemplo, no puedes mezclar y hacer coincidir los valores BigInt y Number en la misma operacin, y no puedes usar el objeto Math con valores BigInt.

Consulta tambin estructuras y tipos de datos JavaScript para conocer el contexto con otros tipos primitivos en JavaScript.

Puedes utilizar cuatro tipos de literales numricos: decimal, binario, octal y hexadecimal.

Nmeros decimales

js
1234567890;
42;

// Precaucin al usar ceros a la izquierda:

0888; // 888 procesado como decimal
0777; // procesado como octal en modo no estricto (511 en decimal)

Ten en cuenta que los decimales literales pueden comenzar con un cero (0) seguido de otro dgito decimal, pero si cada dgito despus del 0 inicial es menor que 8, el nmero se procesa como un nmero octal.

Nmeros binarios

La sintaxis de nmeros binarios utiliza un cero inicial seguido de una letra "B" latina en minscula o mayscula (0b o 0B). Si los dgitos despus del 0b no son 0 o 1, el siguiente SyntaxError se lanza un: "Faltan dgitos binarios despus de 0b".

js
var FLT_SIGNBIT = 0b10000000000000000000000000000000; // 2147483648
var FLT_EXPONENT = 0b01111111100000000000000000000000; // 2139095040
var FLT_MANTISSA = 0b00000000011111111111111111111111; // 8388607

Nmeros octales

La sintaxis de nmeros octales utiliza un cero a la izquierda. Si los dgitos despus del 0 estn fuera del rango de 0 a 7, el nmero se interpretar como un nmero decimal.

js
var n = 0755; // 493
var m = 0644; // 420

El modo estricto en ECMAScript 5 prohbe la sintaxis octal. La notacin octal no es parte de ECMAScript 5, pero la admiten todos los navegadores al poner como prefijo un cero al nmero: 0644 == 420 y "\045" === "%". En ECMAScript 2015, los nmeros octales son compatibles si tienen el prefijo 0o, por ejemplo:

js
var a = 0o10; // ES2015: 8

Nmeros hexadecimales

La sintaxis de nmeros hexadecimales utiliza un cero inicial seguido de una letra "X" latina en minscula o mayscula (0x o 0X). Si los dgitos despus de 0x estn fuera del rango (0123456789ABCDEF), el siguiente SyntaxError se lanza: "El identificador comienza inmediatamente despus del literal numrico".

js
0xfffffffffffffffff; // 295147905179352830000
0x123456789abcdef; // 81985529216486900
0xa; // 10

Exponenciacin

js
1e3; // 1000
2e6; // 2000000
0.1e2; // 10

El objeto Number

El objeto integrado Number tiene propiedades para constantes numricas, como valor mximo, NaN (no un nmero) e infinity. No puedes cambiar los valores de estas propiedades y las debes usar de la siguiente manera:

js
var biggestNum = Number.MAX_VALUE;
var smallestNum = Number.MIN_VALUE;
var infiniteNum = Number.POSITIVE_INFINITY;
var negInfiniteNum = Number.NEGATIVE_INFINITY;
var notANum = Number.NaN;

Siempre haces referencia a una propiedad del objeto Number predefinido como se muestra arriba, y no como una propiedad de un objeto Number que creas t mismo.

La siguiente tabla resume las propiedades del objeto Number.

Propiedad Descripcin
Number.MAX_VALUE El nmero representable ms grande (1.7976931348623157e+308)
Number.MIN_VALUE El nmero representable ms pequeo (5e-324)
Number.NaN Valor especial not a number ("no es un nmero")
Number.NEGATIVE_INFINITY Valor infinito negativo especial; devuelto por desbordamiento
Number.POSITIVE_INFINITY Valor infinito positivo especial; devuelto por desbordamiento
Number.EPSILON Diferencia entre 1 y el valor ms pequeo mayor que 1 que se puede representar como un Number (2.220446049250313e-16)
Number.MIN_SAFE_INTEGER Nmero entero seguro mnimo en JavaScript (253 + 1 o 9007199254740991)
Number.MAX_SAFE_INTEGER Mximo nmero entero seguro en JavaScript (+253 - 1 o +9007199254740991)
Mtodo Descripcin
Number.parseFloat() Analiza un argumento de cadena y devuelve un nmero de punto flotante. Igual que la funcin parseFloat() global.
Number.parseInt() Analiza un argumento de cadena y devuelve un nmero entero de la base o raz especificada. Igual que la funcin parseInt() global.
Number.isFinite() Determina si el valor pasado es un nmero finito.
Number.isInteger() Determina si el valor pasado es un nmero entero.
Number.isNaN() Determina si el valor pasado es NaN. Versin ms robusta del isNaN() global original.
Number.isSafeInteger() Determina si el valor proporcionado es un nmero que es un entero seguro.

El prototipo Number proporciona mtodos para recuperar informacin de objetos Number en varios formatos. La siguiente tabla resume los mtodos de Number.prototype.

Mtodo Descripcin
toExponential() Devuelve una cadena que representa el nmero en notacin exponencial.
toFixed() Devuelve una cadena que representa el nmero en notacin de punto fijo.
toPrecision() Devuelve una cadena que representa el nmero con una precisin especificada en notacin de punto fijo.

El objeto Math

El objeto integrado Math tiene propiedades y mtodos para constantes y funciones matemticas. Por ejemplo, la propiedad PI del objeto Math tiene el valor de pi (3.141...), que usaras en una aplicacin como:

js
Math.PI;

De manera similar, las funciones matemticas estndar son mtodos de Math. Estas incluyen funciones trigonomtricas, logartmicas, exponenciales y otras. Por ejemplo, si deseas utilizar la funcin trigonomtrica seno, debes escribir

js
Math.sin(1.56);

Ten en cuenta que todos los mtodos trigonomtricos de Math toman argumentos en radianes.

La siguiente tabla resume los mtodos del objeto Math.

Mtodo Descripcin
abs() Valor absoluto
sin(), cos(), tan() Funciones trigonomtricas estndar; con el argumento en radianes.
asin(), acos(), atan(), atan2() Funciones trigonomtricas inversas; devuelven valores en radianes.
sinh(), cosh(), tanh() Funciones hiperblicas; argumento en ngulo hiperblico.
asinh(), acosh(), atanh() Funciones hiperblicas inversas; devuelven valores en ngulo hiperblico.
pow(), exp(), expm1(), log10(), log1p(), log2() Funciones exponenciales y logartmicas.
floor(), ceil() Devuelve el entero ms grande/ms pequeo menor/mayor o igual que un argumento.
min(), max() Devuelven el valor mnimo o mximo (respectivamente) de una lista de nmeros separados por comas como argumentos.
random() Devuelve un nmero aleatorio entre 0 y 1.
round(), fround(), trunc(), Funciones de redondeo y truncamiento.
sqrt(), cbrt(), hypot() Raz cuadrada, raz cbica, raz cuadrada de la suma de argumentos cuadrados.
sign() El signo de un nmero, que indica si el nmero es positivo, negativo o cero.
clz32(), imul() Nmero de bits cero iniciales en la representacin binaria de 32 bits. El resultado de la multiplicacin de 32 bits similar a C de los dos argumentos.

A diferencia de muchos otros objetos, nunca creas un objeto Math propio. Siempre usas el objeto Math incorporado.

El objeto Date

JavaScript no tiene un tipo de dato para fechas. Sin embargo, puedes utilizar el objeto Date y sus mtodos para trabajar con fechas y horas en tus aplicaciones. El objeto Date tiene una gran cantidad de mtodos para establecer, obtener y manipular fechas. Pero no tiene propiedades.

JavaScript maneja las fechas de manera similar a Java. Los dos lenguajes tienen muchos de los mismos mtodos de fecha, y ambos lenguajes almacenan fechas como el nmero de milisegundos desde el 1 de enero de 1970, 00:00:00, con una marca de tiempo Unix que es el nmero de segundos desde el 1 de enero de 1970, 00: 00:00.

El rango del objeto Date es de -100,000,000 de das a 100,000,000 de das en relacin con el 1 de enero de 1970 UTC.

Para crear un objeto Date:

js
var dateObjectName = new Date([parameters]);

donde dateObjectName es el nombre del objeto Date que se est creando; puede ser un objeto nuevo o una propiedad de un objeto existente.

Llamar a Date sin la palabra clave new devuelve una cadena que representa la fecha y hora actuales.

Los parmetros de la sintaxis anterior pueden ser cualquiera de los siguientes:

  • Nada: crea la fecha y hora de hoy. Por ejemplo, today = new Date();.
  • Una cadena que representa una fecha en la siguiente forma: "Mes da, ao horas:minutos:segundos." Por ejemplo, var Xmas95 = new Date("December 25, 1995 13:30:00"). Si omites horas, minutos o segundos, el valor se establecer en cero.
  • Un conjunto de valores enteros para ao, mes y da. Por ejemplo, var Xmas95 = new Date(1995, 11, 25).
  • Un conjunto de valores enteros para ao, mes, da, hora, minuto y segundos. Por ejemplo, var Xmas95 = new Date(1995, 11, 25, 9, 30, 0).

Mtodos del objeto Date

Los mtodos del objeto Date para manejar fechas y horas se incluyen en estas categoras generales:

  • mtodos establecedores ("set"), para configurar valores de fecha y hora en objetos Date.
  • Mtodos captadores ("get"), para obtener valores de fecha y hora de objetos Date.
  • mtodos conversores ("to"), para devolver valores de cadena de objetos Date.
  • mtodos parse y UTC, para analizar cadenas de Date.

Con los mtodos "get" y "set" puedes obtener y establecer segundos, minutos, horas, da del mes, da de la semana, meses y aos por separado. Existe un mtodo getDay que devuelve el da de la semana, pero no existe el mtodo setDay correspondiente, porque el da de la semana se establece automticamente. Estos mtodos utilizan nmeros enteros para representar estos valores de la siguiente manera:

  • Segundos y minutos: 0 a 59
  • Horas: 0 a 23
  • Da: 0 (Domingo) a 6 (Sbado)
  • Fecha: 1 al 31 (da del mes)
  • Meses: 0 (Enero) a 11 (Diciembre)
  • Ao: aos desde 1900

Por ejemplo, supongamos que defines la siguiente fecha:

js
var Xmas95 = new Date("December 25, 1995");

Entonces, Xmas95.getMonth() devuelve 11 y Xmas95.getFullYear() devuelve 1995.

Los mtodos getTime y setTime son tiles para comparar fechas. El mtodo getTime devuelve el nmero de milisegundos desde el 1 de enero de 1970, 00:00:00 para un objeto Date.

Por ejemplo, el siguiente cdigo muestra el nmero de das que quedan en el ao actual:

js
var today = new Date();
var endYear = new Date(1995, 11, 31, 23, 59, 59, 999); // Establece da y mes
endYear.setFullYear(today.getFullYear()); // Establece ao a este ao
var msPerDay = 24 * 60 * 60 * 1000; // Nmero de milisegundos por da
var daysLeft = (endYear.getTime() - today.getTime()) / msPerDay;
var daysLeft = Math.round(daysLeft); // devuelve los das que quedan en el ao

Este ejemplo crea un objeto Date llamado today que contiene la fecha de hoy. Luego crea un objeto Date llamado endYear y establece el ao en el ao actual. Luego, usando la cantidad de milisegundos por da, calcula la cantidad de das entre today y endYear, usando getTime y redondeando a un nmero entero de das.

El mtodo parse es til para asignar valores de cadenas de fecha a objetos Date existentes. Por ejemplo, el siguiente cdigo usa parse y setTime para asignar un valor de fecha al objeto IPOdate:

js
var IPOdate = new Date();
IPOdate.setTime(Date.parse("Aug 9, 1995"));

Ejemplo

En el siguiente ejemplo, la funcin JSClock() devuelve la hora en el formato de un reloj digital.

js
function JSClock() {
  var time = new Date();
  var hour = time.getHours();
  var minute = time.getMinutes();
  var second = time.getSeconds();
  var temp = "" + (hour > 12 ? hour - 12 : hour);
  if (hour == 0) temp = "12";
  temp += (minute < 10 ? ":0" : ":") + minute;
  temp += (second < 10 ? ":0" : ":") + second;
  temp += hour >= 12 ? " P.M." : " A.M.";
  return temp;
}

La funcin JSClock primero crea un nuevo objeto Date llamado time; dado que no se dan argumentos, la hora se crea con la fecha y hora actuales. Luego, las llamadas a los mtodos getHours, getMinutes y getSeconds asignan el valor de la hora, minuto y segundo actuales a hour, minute y second.

Las siguientes cuatro declaraciones crean un valor de cadena basado en el tiempo. La primera declaracin crea una variable temp, asignndole un valor mediante una expresin condicional; si hour es mayor que 12, (hour - 12), de lo contrario, simplemente hora, a menos que la hora sea 0, en cuyo caso se convierte en 12.

La siguiente declaracin agrega un valor de minute a temp. Si el valor de minute es menor que 10, la expresin condicional agrega una cadena con un cero precedente; de lo contrario, agrega una cadena con dos puntos de demarcacin. Luego, una declaracin agrega un valor de segundos a temp de la misma manera.

Finalmente, una expresin condicional agrega "P.M." a temp si hour es 12 o mayor; de lo contrario, agrega "A.M." a temp.


Web Proxy Viewer  |  New URL  |  Original Page