Je jouais avec Go et j'ai trouvé ce code particulièrement intéressant pour la fonction abs dans le package mathématique:
http://golang.org/src/pkg/math/abs.go
14 func abs(x float64) float64 {
15 switch {
16 case x < 0:
17 return -x
18 case x == 0:
19 return 0 // return correctly abs(-0)
20 }
21 return x
22 }
Pourquoi devons-nous avoir le cas particulier de x == 0? Que se passera-t-il si je supprime les lignes 18 et 19?
La norme à virgule flottante IEEE 754 autorise les zéros signés . Un zéro négatif est égal à un zéro positif, il ne serait donc pas couvert par le
< 0
test.la source