Number(123.456).toFixed(20)
émet
"123.45600000000000306954"
D'où vient le 306954
? Je sais que les nombres représentés en binaire ne peuvent pas être précis. Mais je n'ai trouvé aucune mention dans la documentation indiquant que l'appel à number(/.../) entraînerait une perte de précision.
mdn dit
Une représentation en chaîne de caractères du nombre qui n'utilise pas la notation exponentielle et qui a exactement des chiffres après la virgule. Le nombre est arrondi si nécessaire, et la partie fractionnaire est rembourrée de zéros si nécessaire pour qu'elle ait la longueur spécifiée. Si le nombre est supérieur à 1e+21, cette méthode appelle simplement Number.toString() et renvoie une chaîne en notation exponentielle
edit
toFixed renvoie un point fixe et non un point flottant ...