Revision becc49b1
Von Stephan Köhler vor etwa 19 Jahren hinzugefügt
SL/Form.pm | ||
---|---|---|
540 | 540 |
$amount =~ s/\d{3,}?/$&,/g; |
541 | 541 |
$amount =~ s/,$//; |
542 | 542 |
$amount = join '', reverse split //, $amount; |
543 |
$amount .= "\.$dec".$fillup; |
|
543 |
$amount .= "\.$dec".$fillup if ($places ne '' && $places*1 != 0);
|
|
544 | 544 |
} |
545 | 545 |
|
546 | 546 |
if ($myconfig->{numberformat} eq '1.000,00') { |
547 | 547 |
$amount =~ s/\d{3,}?/$&./g; |
548 | 548 |
$amount =~ s/\.$//; |
549 | 549 |
$amount = join '', reverse split //, $amount; |
550 |
$amount .= ",$dec" .$fillup;
|
|
550 |
$amount .= ",$dec".$fillup if ($places ne '' && $places*1 != 0);
|
|
551 | 551 |
} |
552 | 552 |
|
553 | 553 |
if ($myconfig->{numberformat} eq '1000,00') { |
554 | 554 |
$amount = "$whole"; |
555 |
$amount .= ",$dec" .$fillup; |
|
555 |
$amount .= ",$dec" .$fillup if ($places ne '' && $places*1 != 0);
|
|
556 | 556 |
} |
557 | 557 |
|
558 | 558 |
if ($dash =~ /-/) { |
... | ... | |
604 | 604 |
$main::lxdebug->enter_sub(); |
605 | 605 |
|
606 | 606 |
my ($self, $amount, $places) = @_; |
607 |
my $rc;
|
|
607 |
my $round_amount;
|
|
608 | 608 |
|
609 |
# $places = 3 if $places == 2; |
|
610 |
|
|
611 |
if (($places * 1) >= 0) { |
|
612 |
|
|
613 |
# add 1/10^$places+3 |
|
614 |
$rc = |
|
615 |
sprintf("%.${places}f", |
|
616 |
$amount + (1 / (10**($places + 3))) * (($amount > 0) ? 1 : -1)); |
|
617 |
} else { |
|
618 |
$places *= -1; |
|
619 |
$rc = |
|
620 |
sprintf("%.f", $amount / (10**$places) + (($amount > 0) ? 0.1 : -0.1)) * |
|
621 |
(10**$places); |
|
622 |
} |
|
609 |
# Rounding like "Kaufmannsrunden" |
|
610 |
# Descr. http://de.wikipedia.org/wiki/Rundung |
|
611 |
# Inspired by |
|
612 |
# http://www.perl.com/doc/FAQs/FAQ/oldfaq-html/Q4.13.html |
|
613 |
# Solves Bug: 189 |
|
614 |
# Udo Spallek |
|
615 |
$amount = $amount * (10 ** ($places)); |
|
616 |
$round_amount = int($amount + .5 * ($amount <=> 0))/(10**($places)); |
|
623 | 617 |
|
624 | 618 |
$main::lxdebug->leave_sub(); |
625 | 619 |
|
626 |
return $rc; |
|
620 |
return $round_amount; |
|
621 |
|
|
627 | 622 |
} |
628 | 623 |
|
629 | 624 |
|
bin/mozilla/ic.pl | ||
---|---|---|
1955 | 1955 |
sub form_header { |
1956 | 1956 |
$lxdebug->enter_sub(); |
1957 | 1957 |
|
1958 |
my $dec = ''; |
|
1959 |
|
|
1960 |
#decimalplaces for listprice |
|
1961 |
($dec) = ($form->{listprice} =~ /\.(\d+)/); |
|
1962 |
$dec = length $dec; |
|
1963 |
my $decimalplaces = ($dec > 2) ? $dec : 2; |
|
1964 |
$form->{listprice} = |
|
1965 |
$form->format_amount(\%myconfig, $form->{listprice}, $decimalplaces); |
|
1966 |
|
|
1967 |
#decimalplaces for sellprice and gv |
|
1958 | 1968 |
($dec) = ($form->{sellprice} =~ /\.(\d+)/); |
1959 | 1969 |
$dec = length $dec; |
1960 | 1970 |
my $decimalplaces = ($dec > 2) ? $dec : 2; |
... | ... | |
1962 | 1972 |
map { |
1963 | 1973 |
$form->{$_} = |
1964 | 1974 |
$form->format_amount(\%myconfig, $form->{$_}, $decimalplaces) |
1965 |
} qw(listprice sellprice gv);
|
|
1975 |
} qw(sellprice gv); |
|
1966 | 1976 |
|
1967 | 1977 |
($dec) = ($form->{lastcost} =~ /\.(\d+)/); |
1968 | 1978 |
$dec = length $dec; |
Auch abrufbar als: Unified diff
Merge von 581,589-595 aus unstable: Patch zum Rundungsfehler
-Bug 189: Patch zum Rundungsfehler
-sub round_amount schnedet nun anhängende Nullen automatisch ab.
-Änderungen bez. sub round_amound von heute Morgen wieder herausgenommen, weil nonfunktional. Das problem scheint woanders zu liegen.
-Darstellungsfehler bei Ganzzahlen behoben. Vorher wurde bspw. '2' als '2,' dargestellt, nun wird richtig formatiert.
-Die Anzahl der dargestellten Nachkommastellen jedes einzelnen Preises sollte mit der eingegebenen Anzahl
an Nachkommastellen übereinstimmen. Die eingegebenen Preise sollten nicht gerundet werden.