Revision bf19eeda
Von Kivitendo Admin vor etwa 9 Jahren hinzugefügt
SL/Form.pm | ||
---|---|---|
822 | 822 |
my $force_places = defined $places && $places >= 0; |
823 | 823 |
|
824 | 824 |
$amount = $self->round_amount($amount, abs $places) if $force_places; |
825 |
$neg = 0 if $amount == 0; # don't show negative zero |
|
825 | 826 |
$amount = sprintf "%.*f", ($force_places ? $places : 10), abs $amount; # 6 is default for %fa |
826 | 827 |
|
827 | 828 |
# before the sprintf amount was a number, afterwards it's a string. because of the dynamic nature of perl |
t/form/format_amount.t | ||
---|---|---|
51 | 51 |
is($::form->format_amount($config, 10, 0), '10', 'autotrim does not harm integers 4'); |
52 | 52 |
|
53 | 53 |
is($::form->format_amount($config, 0, 0), '0' , 'trivial zero'); |
54 |
is($::form->format_amount($config, -0.002, 2), '0,00' , 'negative zero'); |
|
55 |
is($::form->format_amount($config, -0.002, 3), '-0,002' , 'negative zero'); |
|
54 | 56 |
|
55 | 57 |
# dash stuff |
56 | 58 |
|
Auch abrufbar als: Unified diff
format_amount - negative 0 vermeiden
Ist eine Zahl z.B. -0.002, und wird auf 2 Stellen gerundet, so wird erst
das Minuszeichen gemerkt, dann gerundet (0.00), und schießlich wird das
Minus wieder hinzugefügt, dadurch bekommt man -0.00. Mit diesem Patch
wird das Minus-Zeichen entfernt wenn die gerundete Zahl genau 0 ergibt.