JavaScript SpeechSynthesisUtterance

JavaScript SpeechSynthesisUtterance

为什么 SpeechSynthesisUtterance.volume 属性 return "0.4000000059604645" 设置为 ".4" 时?

var u = new SpeechSynthesisUtterance();
u.volume = .4;
console.log(u.volume);

var u = new SpeechSynthesisUtterance();
u.volume = .4;
console.log(u.volume);

.volume 属性 被指定存储 as a "float", which means 它是按照单精度 32 位 IEEE 754 存储的。

如果你 plug in 0.4,你得到 0x3ecccccd 的十六进制值,当转换回十进制时,它是 0.4000000059604645(由于不精确)。

这与普通的 JavaScript 数字形成对比,后者存储为双精度 64 位数字(因此具有更准确的尾随数字)。