Ich habe mit Go herumgespielt und diesen besonders interessanten Code für die abs-Funktion im Mathe-Paket gefunden:
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 }
Warum brauchen wir den Sonderfall x == 0? Was passiert, wenn ich die Zeilen 18 und 19 lösche?
Der Gleitkomma-Standard IEEE 754 erlaubt vorzeichenbehaftete Nullen . Eine negative Null ist gleich einer positiven Null, sodass sie vom
< 0
Test nicht abgedeckt wird .quelle