Thread Kaufm. Runden (34 answers)
Opened by mikdoe at 2009-07-06 16:35

Taulmarill
 2009-07-08 11:10
#122960 #122960
User since
2004-02-19
1750 Artikel
BenutzerIn

user image
Quote
Frage 1: Wie kann ich erreichen, dass ich bei der Multiplikation eines Wertes mit max. zwei Nachkommastellen anschließend einen Wert ohne jegliche Nachkommastellen bekomme?

Das Vorgehen, .87 mit 100 zu Multiplizieren, um genau 87 dabei heraus zu bekommen, ist schon mal falsch, da nicht alle dezimalen Zahlen mit zwei Nachkommastellen binär vernünftig darstellbar sind. Ich würde den Betrag als String betrachten und daraus einen Integer konstruieren, mit dem man dann verlustfrei rechnen kann, etwa so:
Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
use strict;
use warnings;

for my $betrag ( qw/345.4 .34 123,456.45 .2/ ) {
print "$betrag => ";
my( $euro, $cent ) = split /\./, $betrag;
$euro = '0' unless $euro;
$euro =~ tr/,//d;
$cent .= '0' while length $cent < 2;
my $gesamt_cent = $euro . $cent;
$gesamt_cent =~ s/^0+//;
print "$gesamt_cent\n";
}
$_=unpack"B*",~pack"H*",$_ and y&1|0& |#&&print"$_\n"for@.=qw BFA2F7C39139F45F78
0A28104594444504400 0A2F107D54447DE7800 0A2110453444450500 73CF1045138445F4800 0
F3EF2044E3D17DE 8A08A0451412411 F3CF207DF41C79E 820A20451412414 83E93C4513D17D2B

View full thread Kaufm. Runden