Da die Spalte number_value in der DB vom Typ numeric() ist, wird das von
Rose als String eingelesen. Das bedeutet, dass ->number_value z.B. der
Wert '0.00000' liefert, was im Booleschen Kontext trueish ist – nicht
das, was der Programmierer erwarten würde.
Statt dessen erwartet der Programmierer, dass !$zahl für den Wert 0 auch
wirklich zutrifft.
Daher sollte ->value für CVars vom Typ Nummer auch wirklich eine Zahl
zurückgeben, was durch ein * 1 erzwungen wird. Ausnahme: undef, was
weiterhin undef bleibt.
 
   goto &bool_value      if $type eq 'bool';
   goto ×tamp_value if $type eq 'timestamp';
-  goto &number_value    if $type eq 'number';
+
+  if ($type eq 'number') {
+    return defined($self->number_value) ? $self->number_value * 1 : undef;
+  }
 
   if ( $type eq 'customer' ) {
     require SL::DB::Customer;