Estoy tomando la entrada del usuario e intentando establecer la cantidad máxima de lugares decimales en 8 dígitos después del decimal. Estaba investigando esto y he visto soluciones que me dicen que haga el método .toFixed() de javascript. Sin embargo, lo probé y descubrí que agregará automáticamente alrededor de 8 ceros en la entrada para lo que ingrese en el campo de entrada. Por ejemplo, si escribo 5 en el campo, obtendría lo siguiente en el campo de entrada: 5.00000000
Este no es el objetivo, ya que solo quiero limitar la cantidad de lugares decimales que un usuario puede ingresar a 8. Está bien si es menor que eso.
Por favor vea mi código abajo. ¡Gracias!
const handleAmount = (value) => { const numberAmount = Number(value).toFixed(8); setAmount(numberAmount); }; <TextField className={classes.textField} type="number" onChange={e => handleAmount(e.target.value)} value={amount} placeholder="0.000" inputProps={{ maxLength: 8, step: '.01' }} variant="outlined" />Podrías hacer un pequeño truco donde multiplicas el número por 1e8 y luego lo redondeas, luego lo divides por 1e8 .
Por ejemplo:
const setAmount = console.log; const handleAmount = (value) => { const numberAmount = Number(value); const rounded = Math.round(numberAmount * 1e8) / 1e8; setAmount(rounded); }; handleAmount(10.21231123124124124142); handleAmount(7.242); handleAmount(80.00000000000); handleAmount(21.00000001); Sin embargo, la desventaja es que 41.000000000 por ejemplo, se analizaría como 41 .