Es una calculadora básica hecha por el canal de youtube Web Dev Simplified. Hizo un tutorial de YouTube sobre él, lo seguí y básicamente hice lo mismo.
Tanto su calculadora de ejemplo como la mía tienen el mismo problema, donde si presiono cualquiera de los botones numéricos (por ejemplo, '1') 17 veces o más, los números ingresados después del dígito 16 se muestran como un número diferente por alguna razón (17 dígito se convierte en '2' y no en '1').
Lo hace con cualquier número ingresado. no entiendo porque
Adjunté un enlace de codepen para que pueda ver tanto su código como la salida del código.
Encontrará la salida de la pantalla en esta parte del código HTML:
<div class="output"> <div data-previous-operand class="previous-operand"></div> <div data-current-operand class="current-operand"></div> </div>es porque su número ha terminado que el entero agrega console.log() en la función getDisplayNumber y compara el registro y los datos de visualización
en el registro, parece 1.1111111111111111e+21 cuando está fuera del rango
¿Cuál es el valor entero más alto de JavaScript al que puede ir un número sin perder precisión?
getDisplayNumber(number) { const stringNumber = number.toString() const integerDigits = parseFloat(stringNumber.split('.')[0]) const decimalDigits = stringNumber.split('.')[1] console.log(integerDigits) let integerDisplay if (isNaN(integerDigits)) { integerDisplay = '' } else { integerDisplay = integerDigits.toLocaleString('en', { maximumFractionDigits: 0 }) } if (decimalDigits != null) { return `${integerDisplay}.${decimalDigits}` } else { return integerDisplay } }