Estaba jugando con Go, y encontré este código interesante en particular para la función abs en el paquete matemático:
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 }
¿Por qué necesitamos tener el caso especial de x == 0? ¿Qué pasará si elimino las líneas 18 y 19?
El estándar de punto flotante IEEE 754 permite ceros con signo . Un cero negativo es igual a un cero positivo, por lo que no sería cubierto por la
< 0
prueba.fuente