Schrift
Wiki:Tipp zum Debugging: use Data::Dumper; local $Data::Dumper::Useqq = 1; print Dumper \@var;
[thread]11767[/thread]

Auf 2. Kommastelle runden? (Seite 2)

Leser: 35


<< |< 1 2 3 4 >| >> 32 Einträge, 4 Seiten
Strat
 2008-05-16 17:10
#109791 #109791
User since
2003-08-04
5246 Artikel
ModeratorIn
[Homepage] [default_avatar]
geht's um irgendwelche währungssachen? falls ja, dann besser mit cent als mit euros rechnen...
perl -le "s::*erlco'unaty.'.dk':e,y;*kn:ai;penmic;;print"
http://www.fabiani.net/
Gast Gast
 2008-05-16 22:00
#109817 #109817
Löst auch nicht das Problem. Wie sieht es mit 122,6 Cent aus?
KurtZ
 2008-05-16 23:00
#109820 #109820
User since
2007-12-13
411 Artikel
BenutzerIn
[default_avatar]
Gast+2008-05-16 20:00:52--
Löst auch nicht das Problem. Wie sieht es mit 122,6 Cent aus?

Also wenn Zehntelcent vorkommen können dann rechnet man halt in Zehntelcent, d.h. man addiert die Zähler und dividiert am Schluss durch den Nenner und rundet erst dabei!


perl -le 'for ($i = 0; $i < 0.101; $i += 0.005, $j+=5) { printf qq~ %.20f : %.2f \n~, $i,int(($j+5)/10)/100 }'
0.00000000000000000000 : 0.00
0.00500000000000000010 : 0.01
0.01000000000000000021 : 0.01
0.01499999999999999944 : 0.02
0.02000000000000000042 : 0.02
0.02500000000000000139 : 0.03
0.03000000000000000236 : 0.03
0.03500000000000000333 : 0.04
0.04000000000000000083 : 0.04
0.04499999999999999833 : 0.05
0.04999999999999999584 : 0.05
0.05499999999999999334 : 0.06
0.05999999999999999084 : 0.06
0.06499999999999998834 : 0.07
0.06999999999999999278 : 0.07
0.07499999999999999722 : 0.08
0.08000000000000000167 : 0.08
0.08500000000000000611 : 0.09
0.09000000000000001055 : 0.09
0.09500000000000001499 : 0.10
0.10000000000000001943 : 0.10
TMTOWTDYOG (there's more than one way to dig your own grave)
pq
 2008-05-16 23:02
#109821 #109821
User since
2003-08-04
12208 Artikel
Admin1
[Homepage]
user image
es gibt auch noch centicent. das sollte für die meisten preise reichen.
Always code as if the guy who ends up maintaining your code will be a violent psychopath who knows where you live. -- Damian Conway in "Perl Best Practices"
lesen: Wiki:Wie frage ich & perlintro Wiki:brian's Leitfaden für jedes Perl-Problem
bianca
 2009-12-11 06:59
#129171 #129171
User since
2009-09-13
6977 Artikel
BenutzerIn

user image
2008-05-08T20:55:17 topeg
Alle Ansätze patzen irgendwo.

Dieser hier leider auch, wenn es um kaufmännisches Runden geht. Hab diesen Ansatz hier eine Weile verwendet und bin auf etliche Fehler - insbesondere bei negativen Beträgen gestoßen:

Hab ein paar Tests durchlaufen lassen:

Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
'0.49999999'...............auf 0 Stelle(n): '0'........................ OK
'-0.49999999'..............auf 0 Stelle(n): '0'........................ OK
'0.5'......................auf 0 Stelle(n): '1'........................ OK
'-0.5'.....................auf 0 Stelle(n): '0'........................ FEHLER! Erwartet '-1'
'0.567'....................auf 3 Stelle(n): '0.567'.................... OK
'-0.567'...................auf 3 Stelle(n): '-0.567'................... OK
'0.5674'...................auf 3 Stelle(n): '0.567'.................... OK
'-0.5674'..................auf 3 Stelle(n): '-0.567'................... OK
'0.5678'...................auf 3 Stelle(n): '0.568'.................... OK
'-0.5678'..................auf 3 Stelle(n): '-0.567'................... FEHLER! Erwartet '-0.568'
'0.999999999'..............auf 0 Stelle(n): '1'........................ OK
'-0.999999999'.............auf 0 Stelle(n): '0'........................ FEHLER! Erwartet '-1'
'1'........................auf 2 Stelle(n): '1.00'..................... OK
'-1'.......................auf 2 Stelle(n): '-1.00'.................... OK
'1.295'....................auf 2 Stelle(n): '1.30'..................... OK
'-1.295'...................auf 2 Stelle(n): '-1.29'.................... FEHLER! Erwartet '-1.3'
'1.455'....................auf 2 Stelle(n): '1.46'..................... OK
'-1.455'...................auf 2 Stelle(n): '-1.45'.................... FEHLER! Erwartet '-1.46'
'1.9'......................auf 0 Stelle(n): '2'........................ OK
'-1.9'.....................auf 0 Stelle(n): '-1'....................... FEHLER! Erwartet '-2'
'8.9964'...................auf 1 Stelle(n): '9.0'...................... OK
'-8.9964'..................auf 1 Stelle(n): '-8.9'..................... FEHLER! Erwartet '-9'
'8.9964'...................auf 2 Stelle(n): '9.00'..................... OK
'-8.9964'..................auf 2 Stelle(n): '-8.99'.................... FEHLER! Erwartet '-9'
'8.9964'...................auf 0 Stelle(n): '9'........................ OK
'-8.9964'..................auf 0 Stelle(n): '-8'....................... FEHLER! Erwartet '-9'
'9.999'....................auf 3 Stelle(n): '9.999'.................... OK
'-9.999'...................auf 3 Stelle(n): '-9.999'................... OK
'9.999'....................auf 0 Stelle(n): '10'....................... OK
'-9.999'...................auf 0 Stelle(n): '-9'....................... FEHLER! Erwartet '-10'
'9.999'....................auf 2 Stelle(n): '10.00'.................... OK
'-9.999'...................auf 2 Stelle(n): '-9.99'.................... FEHLER! Erwartet '-10'
'9.999'....................auf 1 Stelle(n): '10.0'..................... OK
'-9.999'...................auf 1 Stelle(n): '-9.9'..................... FEHLER! Erwartet '-10'
'12.2345678905'............auf 9 Stelle(n): '12.234567891'............. OK
'-12.2345678905'...........auf 9 Stelle(n): '-12.234567890'............ FEHLER! Erwartet '-12.234567891'
'34.999'...................auf 2 Stelle(n): '35.00'.................... OK
'-34.999'..................auf 2 Stelle(n): '-34.99'................... FEHLER! Erwartet '-35'
'57'.......................auf 2 Stelle(n): '57.00'.................... OK
'-57'......................auf 2 Stelle(n): '-57.00'................... OK
'456.4'....................auf 0 Stelle(n): '456'...................... OK
'-456.4'...................auf 0 Stelle(n): '-456'..................... OK
'456.5'....................auf 0 Stelle(n): '457'...................... OK
'-456.5'...................auf 0 Stelle(n): '-456'..................... FEHLER! Erwartet '-457'
'12345.34'.................auf 1 Stelle(n): '12345.3'.................. OK
'-12345.34'................auf 1 Stelle(n): '-12345.3'................. OK
'12345.35'.................auf 1 Stelle(n): '12345.4'.................. OK
'-12345.35'................auf 1 Stelle(n): '-12345.3'................. FEHLER! Erwartet '-12345.4'
'999999999999.994'.........auf 2 Stelle(n): '999999999999.99'.......... OK
'-999999999999.994'........auf 2 Stelle(n): '-999999999999.99'......... OK
'999999999999.999'.........auf 2 Stelle(n): '1000000000000.01'......... FEHLER! Erwartet '1000000000000'
'-999999999999.999'........auf 2 Stelle(n): '-999999999999.99'......... FEHLER! Erwartet '-1000000000000'
10 print "Hallo"
20 goto 10
leo11
 2009-12-11 08:24
#129175 #129175
User since
2008-08-14
250 Artikel
BenutzerIn
[default_avatar]
Kann mir gar nicht vorstellen, dass es dafür kein CPAN Modul gibt. Was ist den mit so etwas wie CPAN:Math::Currency ?
Gast Crian
 2009-12-11 08:30
#129176 #129176
Wenn die Fehler nur bei negativen Zahlen auftreten, kannst du dir ja vorher das Vorzeichen merken, mit -1 multiplizieren, runden, wieder mit -1 multiplizieren.
bianca
 2009-12-11 08:33
#129177 #129177
User since
2009-09-13
6977 Artikel
BenutzerIn

user image
Guest Crian
Wenn die Fehler nur bei negativen Zahlen auftreten, kannst du dir ja vorher das Vorzeichen merken, mit -1 multiplizieren, runden, wieder mit -1 multiplizieren.

'999999999999.999' klappt ja auch nicht.
10 print "Hallo"
20 goto 10
bianca
 2009-12-11 08:39
#129178 #129178
User since
2009-09-13
6977 Artikel
BenutzerIn

user image
2009-12-11T07:24:14 leo11
Kann mir gar nicht vorstellen, dass es dafür kein CPAN Modul gibt. Was ist den mit so etwas wie CPAN:Math::Currency ?

In welchem Rep gibt es das für Active Perl?
10 print "Hallo"
20 goto 10
renee
 2009-12-11 09:15
#129183 #129183
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
Die 0.46 gibt's wohl nicht, die 0.4502 gibt's als "unstable" bei trouchelle und die 0.44 als stable ebenfalls bei trouchelle.
OTRS-Erweiterungen (http://feature-addons.de/)
Frankfurt Perlmongers (http://frankfurt.pm/)
--

Unterlagen OTRS-Workshop 2012: http://otrs.perl-services.de/workshop.html
Perl-Entwicklung: http://perl-services.de/
<< |< 1 2 3 4 >| >> 32 Einträge, 4 Seiten



View all threads created 2008-05-07 02:31.