Rechnung

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Gast

Rechnung

Beitragvon Gast » Mittwoch 13. Oktober 2004, 14:37

Zeitberechnen

Welchen Datentyp benötige ich, um das Ergebnis dieser Formel auszugeben.

Gibt mir nämlich null aus wenn der Wert ins negative geht.

ueber1= (sum/(60*60))
ueber2= (sum / 60)%60

Ausgabe

"Überstunden: %d:%d" % (ueber1, ueber2)

ist wahrscheinlich easy

trotzdem danke
Benutzeravatar
Dookie
Python-Forum Veteran
Beiträge: 2010
Registriert: Freitag 11. Oktober 2002, 18:00
Wohnort: Salzburg
Kontaktdaten:

Beitragvon Dookie » Mittwoch 13. Oktober 2004, 15:30

Hi Gast,

kannst mal etwas mehr code posten, bei mir kommt da auch bei negativen werten für sum, sowohl bei int als auch bei float nie 0 raus!

Code: Alles auswählen

>>> sum = -32000

>>> print "Überstunden: %d:%d" % ((sum/(60*60)), (sum / 60)%60)
Überstunden: -9:6

>>> sum = -32000.0

>>> print "Überstunden: %d:%d" % ((sum/(60*60)), (sum / 60)%60)
Überstunden: -8:6



Gruß

Dookie

Code: Alles auswählen

#!/usr/bin/env python
import this
Milan
User
Beiträge: 1078
Registriert: Mittwoch 16. Oktober 2002, 20:52

Beitragvon Milan » Mittwoch 13. Oktober 2004, 17:27

Hi. Wahrscheinlich hat er einfach solche Integerwerte genommen: -60 < sum < 60 . Dann ist klar, das bei beiden 0 rauskommt, da int durch int immer den ganzahlgen Betrag der Division (halt div) ergibt und keine Fließkommazahl. Lösung: Einfach floats benutzten.
Gast

Beitragvon Gast » Donnerstag 14. Oktober 2004, 10:45

Danke erstmal für die schnelle hilfe!
Ich ging davon aus das ich in Python die Typen nicht definieren muss
Hab gedacht das kann das selbst. :oops:

Hier ist noch ein bissel mehr von dem Code
vielleicht hilfts ja.

erg1=(rech.stbeginn*3600)+(rech.minbeginn*60)
erg2=(rech.stende*3600)+(rech.minende*60)
erg3=erg2-erg1

help = rech.stpaub + rech.minpaub + rech.stpaub + rech.minpaue
pau = 0
if help != 0:
pau1=(rech.stpaub*3600)+(rech.minpaub*60)
pau2=(rech.stpaub*3600)+(rech.minpaue*60)
pau = pau2-pau1


erg3=erg3-pau
stunden= (erg3/(60*60))
minuten= (erg3 / 60)%60
pau = pau/60
sum = 0

ueber1= (sum/(60*60))
ueber2= (sum / 60)%60
return "Arbeitszeit: %d Stunden und %d Minuten Überstunden: % d:%d Pausenzeit: %d" % (stunden, minuten, ueber1, ueber2, pau)
Benutzeravatar
Dookie
Python-Forum Veteran
Beiträge: 2010
Registriert: Freitag 11. Oktober 2002, 18:00
Wohnort: Salzburg
Kontaktdaten:

Beitragvon Dookie » Donnerstag 14. Oktober 2004, 12:47

Hi,

na wenn du sum auf 0 setzt darfst du dich nicht wundern wenn 0 bei deinen Berechnungen rauskommt.

Typen definierst Du wenn du den entsprechenden Typ bei einer Zuweisung verwendest

0 -> int
0.0 -> float
"0" -> string


Gruß

Dookie

P.S.: Wenn du Code postest setzte ihn in Zukunft bitte in [ Python ]...[ /Python ] (Ohne Spaces)

Code: Alles auswählen

#!/usr/bin/env python
import this

Wer ist online?

Mitglieder in diesem Forum: Google [Bot]