¿Por qué la propiedad SpeechSynthesisUtterance.volume devuelve "0.4000000059604645" cuando se establece en ".4"?
var u = new SpeechSynthesisUtterance(); u.volume = .4; console.log(u.volume); var u = new SpeechSynthesisUtterance(); u.volume = .4; console.log(u.volume);Se especifica que la propiedad .volume se almacene como un "flotante" , lo que significa que se almacena según IEEE 754 de 32 bits de precisión simple.
Si conecta 0.4, obtiene el valor hexadecimal de 0x3ecccccd, que, cuando se vuelve a convertir a decimal, es 0.4000000059604645 (debido a la imprecisión).
Esto contrasta con los números de JavaScript normales, en los que se almacenan como números de 64 bits de doble precisión (y, por lo tanto, tienen muchos dígitos finales más precisos).