J'essaie de faire des maths à virgule flottante dans un zsh script. Je constate le comportement suivant :
$ (( a = 1.23456789 * 0.00000001 )); printf "a = %g\n" $a
a = 1.23e-08
$ (( a = 1.23456789 * 0.00000001 )); printf "a = %e\n" $a
a = 1.230000e-08
$ (( a = 1.23456789 * 0.0000001 )); printf "a = %e\n" $a
a = 1.235000e-07
Je m'attends à ne pas perdre la précision de la mantisse du premier nombre lorsque je le multiplie simplement par un nombre dont la mantisse est 1 (ou du moins très proche de 1, si l'on considère la véritable représentation binaire). En d'autres termes, je m'attendrais à obtenir a = 1.23456789e-08
ou peut-être une mantisse tronquée, mais pas de zéros après 1.23
/ 1.235
.
J'utilise la version suivante :
$ zsh --version
zsh 5.8 (x86_64-apple-darwin20.0)
Est-ce que j'ai manqué quelque chose ? Ou est-ce un problème dans zsh ? Je suis nouveau dans zsh, et je n'ai pas beaucoup d'expérience dans la programmation shell en général, donc toute aide est appréciée. Merci !