Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

425
Visualizações
¿Qué propiedad del número de Typescript o Math.ceil() causa este error aritmético?

Estoy tratando de crear una función para generar un número único cada vez que uso Typescript. La aritmética es a menudo incorrecta por alguna razón. He ampliado la lógica a continuación y sospecho que tiene algo que ver con el tipo de número de Typescript/Javascript o Math.ceil(). Agradecería si alguien pudiera educarme.

 function nonce(){ const millidate = (new Date()).getTime(); const factor:number = 10000; const codeTime:number = +millidate*factor; const codeEnd:number = Math.ceil(Math.random()*factor); const codeMult:number = Math.ceil(Math.random()*10); const codeBody:number = codeTime+codeEnd; const code:number = codeBody*codeMult; console.log("Breakdown of " + code + ": ", codeTime, codeEnd, codeBody, codeMult); return code; }; nonce();

Imagen de algunas pruebas en Playground

Imagen de algunas pruebas en Playground

Estaba usando Playground de Typescript para probar esto, pero su rendimiento parece ser el mismo en diferentes entornos.

about 4 years ago · Juan Pablo Isaza
2 Respostas
Responde à pergunta

0

Como se señaló en los comentarios, sus números están muy por encima del límite del sistema. Number.MAX_SAFE_INTEGER en mi sistema de 64 bits:

 9007199254740991 <- MSI 163469121917820770 <- your number

Marque hacia abajo, o haga cadenas.

about 4 years ago · Juan Pablo Isaza Relatório

0

Para trabajar con números grandes (más que Number.MAX_SAFE_INTEGER ), debe usar BigInt()

Sin BigInt:

 9007199254740991 + 1 = 9007199254740992 // Right 9007199254740991 + 2 = 9007199254740992 // Wrong 9007199254740991 + 3 = 9007199254740994 // Right

Usando BigInt:

 9007199254740991n + 1n = 9007199254740992n //Right 9007199254740991n + 2n = 9007199254740993n //Right 9007199254740991n + 3n = 9007199254740994n //Right
about 4 years ago · Juan Pablo Isaza Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda