my $sub = 'kfmrunden'; my %test = ( (.57 * 100) . ',2' => 57, '1.295,2' => 1.3, '9.999,3' => 9.999, '9.999,2' => 10, '9.999,1' => 10, '9.999,0' => 10, '8.9964,2' => 9, '8.9964,0' => 9, '8.9964,1' => 9, '1,2' => 1, '1.455,2' => 1.46, '1.9,0' => 2, '12345.34,1' => 12345.3, '12345.35,1' => 12345.4, '12.2345678905,9' => 12.234567891, '.5678,3' => .568, '4.24306121591708e-007,2' => 0, '1e+100,3' => 0, '.5674,3' => .567, '.5670,3' => .567, '456.4,0' => 456, '456.5,0' => 457, '0.49999999,0' => 0, '0.999999999,0' => 1, '0.5,0' => 1, '999999999999.999,2' => 1000000000000, '999999999999.994,2' => 999999999999.99, '00000034.999,2' => 35, ); my $space = '.' x 25; foreach my $test (sort {(split /,/,$a)[0] <=> (split /,/,$b)[0] } keys %test) { foreach my $multi (1,-1) { my ($wert,$stellen) = split /,/,$test; $wert = $wert * $multi; my $erwartet = $test{$test} * $multi; my $gerundet = &{$sub} ($wert,$stellen); print "\'$wert\'" . substr ($space,0,25 - length ($wert)) . "auf $stellen Stelle(n): \'$gerundet\'" . substr ($space,0,25 - length ($gerundet)) . ($gerundet == $erwartet ? ' OK' : " FEHLER! Erwartet \'$erwartet\'") . "\n"; } }