Schrift
[thread]8027[/thread]

Arithmetik

Leser: 1


<< >> 5 Einträge, 1 Seite
Gast Gast
 2006-05-29 16:34
#66694 #66694
ich benutze folgendeS:
Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
use strict;

...
blah
...

my $count=0;
foreach (@spalten_filter) {
if ($spalten_filter[$count] =~ s/^mittel_/summe_/) {
$zeile_file[$filter[$count]]=$zeile_file[$filter[$count]]*($zeile_file[$index_zeit_summe_intervall]/3600);
}
$count++;
}

wobei:
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
@spalten_filter(
zeit_tag
zeit_jahrestag
summe_E_wr__0
perf__0
mittel_tag_T_m__0
mittel_P_sg__0
mittel_G_m__0)

@zeile_file=(
2006-01-03
86400
3
0.327581
1
1
1
0.0381944
1
1
1
1
1
1167.5
0.687204
6.853344
1384.4688
476.688
0.843284
0.0824089
0.0977238 )

@filter=(
0
2
13
14
15
16
17)

und $index_zeit_summe_intervall=1


Alles verlaeuft ohne Fehlermeldungen, aber gibt nicht das erwuenschte Ergebniss
mit print Anweisung wollte ich schauen was passiert:
Code: (dl )
print "etogo $count = $zeile_file[$filter[$count]]=$zeile_file[$filter[$count]]*($zeile_file[$index_zeit_summe_intervall]/3600) !!!",$zeile_file[$filter[$count]],"\n";

und er gibt folgendes raus:
Code: (dl )
1
2
3
etogo 4 = 6.853344=6.853344*(86400/3600) !!!6.853344
etogo 5 = 1384.4688=1384.4688*(86400/3600) !!!1384.4688
etogo 6 = 476.688=476.688*(86400/3600) !!!476.688


Es scheint , als ob Perl ueberhaupt nicht die Arithmetik durchfuehrt

woran kann das denn liegen ???

danke im voraus\n\n

<!--EDIT|renee|1148906234-->
renee
 2006-05-29 16:41
#66695 #66695
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
Aber die Zeile mit der Berechnung hast Du drin gelassen, oder??
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/
docsnyder
 2006-05-29 16:42
#66696 #66696
User since
2005-09-08
300 Artikel
BenutzerIn
[Homepage] [default_avatar]
Falls Du die Arithmetik im print-Statement meinst, dann liegt das schlicht und ergreifend daran, daß in Quotes eingeschlossene Arithmetik Text ist und auch so behandelt wird ;o)

Falls nicht: kann es sein, daß $zeile_file[$index_zeit_summe_intervall] gleich 3600 ist?

Gruß, Doc\n\n

<!--EDIT|docsnyder|1148907077-->
esskar
 2006-05-29 16:43
#66697 #66697
User since
2003-08-04
7321 Artikel
ModeratorIn

user image
[s]hmm

Code: (dl )
$zeile_file[$filter[$count]]=$zeile_file[$filter[$count]]*($zeile_file[$index_zeit_summe_intervall]/3600);


analysieren wir das ganze mal
Code: (dl )
1
2
3
$count = 0;
$filter[$count] = $filter[0] = 0;
$zeile_file[$filter[$count]] = $zeile_file[0] = '2006-01-03';


damit rechnest du dann; ist dann klar, dass sich @zeile_file an der stelle 1 nicht ändert.[/s]

mir erscheint der code relative unsauber; wo bekommst du die daten denn her?\n\n

<!--EDIT|esskar|1148906748-->
renee
 2006-05-29 16:47
#66698 #66698
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
Also bei mir wird es gemacht:
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
53
54
55
56
57
#!/usr/bin/perl

use strict;
use warnings;
use Data::Dumper;


my @spalten_filter = qw(
zeit_tag
zeit_jahrestag
summe_E_wr__0
perf__0
mittel_tag_T_m__0
mittel_P_sg__0
mittel_G_m__0);

my @zeile_file=qw(
2006-01-03
86400
3
0.327581
1
1
1
0.0381944
1
1
1
1
1
1167.5
0.687204
6.853344
1384.4688
476.688
0.843284
0.0824089
0.0977238 );

my @filter=qw(
0
2
13
14
15
16
17);

my $index_zeit_summe_intervall = 1;

my $count=0;
foreach (@spalten_filter) {
if ($spalten_filter[$count] =~ s/^mittel_/summe_/) {
$zeile_file[$filter[$count]]=$zeile_file[$filter[$count]]*($zeile_file[$index_zeit_summe_intervall]/3600);
}
$count++;
}


Ausgabe:
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
$VAR1 = [
'2006-01-03',
'86400',
'3',
'0.327581',
'1',
'1',
'1',
'0.0381944',
'1',
'1',
'1',
'1',
'1',
'1167.5',
'0.687204',
'164.480256',
'33227.2512',
'11440.512',
'0.843284',
'0.0824089',
'0.0977238'
];


Da scheinst Du wohl einen anderen Fehler zu haben.

Da es anscheinend nur ein Ausschnitt aus einem Programm ist, solltest Du vielleicht mal ein Skript zu schreiben (so kurz wie möglich), das den Fehler reproduziert. Das kannst Du ja hier posten...
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/
<< >> 5 Einträge, 1 Seite



View all threads created 2006-05-29 16:34.