php.de

Zurück   php.de > Webentwicklung > PHP Einsteiger > PHP Tipps 2008

 
 
LinkBack Themen-Optionen Thema bewerten
Alt 06.06.2008, 23:06  
Neuer Benutzer
 
Registriert seit: 15.02.2008
Beiträge: 23
Quest15041983 befindet sich auf einem aufstrebenden Ast
Standard [Erledigt] Problem mit 0,5 beim Rechnen

Hi Leute,

ich verzweifel bald! Ich baue gerade an einem Script in dem ich von zwei Jahren Fortbildungsstunden ändern und ansehen will. Das erste Jahr ist immer das vergangene Jahr, da man die Stunden immer im Vorraus leisten muss. In unserem Fall Stunden für 2008 die 2007 geleistet wurden. Das zweite Jahr ist dann logischer Weise 2009. Wenn in 2007 nicht genügen Stunden geleistet wurden, können diese nachträglich in 2008 nachgeholt werden. Heißt wenn ich Jahr 2008 den Wert 29 Stunden habe und 2 Stunden zubuche wird 2008 auf 30 und 2009 auf 1 gesetzt. Dies nur zum Verständnis was gemacht werden soll.

Das Problem besteht nun dadrin, das ich auch halbe Stunden buchen muss. Die Eingabe findet durch ein Formular statt. Somit kann der benutzer anstatt dem geforderten "." auch ein "," zwischen die Dezimalzahlen setzten. Die Lösung dafür habe ich soweit auch bereits gefunden. Dies klappt aber nur mit Zahlen über 1, also +/-1,5 etc. Bei 0,5 passiert bei meinem Script garnichts!

Code:
//Daten aus Formular
$change[Test]=0,5;

//Daten aus MySQL Datenbank
$a->User="Test";
$a->actyear="5";
$a->nextyear="0";

//Rechnung
      if($change[$a->User]!="")
        {
        $g=ereg_replace(",",".",$change[$a->User]);
        $h=$a->actyear; //Eintrag Jahr 2008
        $i=$a->nextyear; //Eintrag Jahr 2009
        echo "$a->User g=$g, h=$h, i=$i<br>"; //Zur Kontrolle ob gerechnet wurde
        if($change[$a->User]>0.00)
          {
          if($h<30){if($h+$g>30){ $j=$h+$g-30.00;$i=$j;$h=30.00;}else{$h=$h+$g;}}else{$i=$i+$g;}
          }
        if($change[$a->User]<0.00)
          {
          $r=$i - abs($g);
          if(($i>0.00&&$i-abs($g)<0.00)||$i<=0.00){$j=abs($i-abs($g));$i=0.00;if($h-$j<0){$h=0;}else{$h=$h-$j;}}else{$i=$i-abs($g);}
          }
        echo "$a->User g=$g, h=$h, i=$i<br>"; //Zur Kontrolle ob gerechnet wurde
        }
Bei diesem Beispiel sollte ja 5,5 als Ergebnis herauskommen. Wenn ich anstatt dem "," den "." setzte läuft das Script! Hat jemand eine Idee wie ich auch bei der Eingabe 0,5 ein Ergebnis bekomme?
Quest15041983 ist offline  
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 06.06.2008, 23:13  
Supermoderator HD
 
Benutzerbild von Manko10
 
Registriert seit: 16.03.2008
Beiträge: 8.709
PHP-Kenntnisse:
Fortgeschritten
Manko10 hat eine strahlende ZukunftManko10 hat eine strahlende ZukunftManko10 hat eine strahlende ZukunftManko10 hat eine strahlende ZukunftManko10 hat eine strahlende ZukunftManko10 hat eine strahlende ZukunftManko10 hat eine strahlende ZukunftManko10 hat eine strahlende ZukunftManko10 hat eine strahlende ZukunftManko10 hat eine strahlende ZukunftManko10 hat eine strahlende Zukunft
Standard

Hallo,

warum machst du das nicht so?
PHP-Code:
$zahl '0,5';
$zahl str_replace(',''.'$zahl);
$zahl = (float)$zahl
(float) ist nicht unbedingt notwendig, da PHP beim Rechnen mit diesem Wert eh ein implizites Typecasting durchführt, aber sicher ist sicher und somit ist auch klar, von welchem Typ die Zahl sein soll.
Es ist übrigens überflüssig, bei solch simplen Sachen, RegEx-Funktionen zu benutzen. Abgesehen davon, dass ereg_* eh etwas veraltet ist.
Manko10 ist offline  
Alt 06.06.2008, 23:14  
Erfahrener Benutzer
 
Benutzerbild von David
 
Registriert seit: 05.09.2007
Beiträge: 5.044
David wird schon bald berühmt werden
Standard

Mittels str_replace
PHP: str_replace - Manual

...zu langsam
David ist offline  
Alt 07.06.2008, 12:55  
Neuer Benutzer
 
Registriert seit: 15.02.2008
Beiträge: 23
Quest15041983 befindet sich auf einem aufstrebenden Ast
Standard

Habe meinen Fehler gefunden! Man sollte auch den bearbeiteten String auf <0.00 prüfen! Jetzt läufst!
Quest15041983 ist offline  
 


Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an
Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
[Erledigt] problem mit der syntax in einer schleife chrischi2011 PHP Tipps 2008 20 25.07.2008 16:25
[Erledigt] Textarea: Einlesen - Problem.. Softyx PHP Tipps 2008 2 05.07.2008 12:49
[Erledigt] problem mit mysql db.. philipp_php PHP Tipps 2008 14 05.07.2008 04:19
[Erledigt] Galerie - Bilder nebeneinander Problem noOx PHP Tipps 2008 14 03.07.2008 23:48
[Erledigt] Statistik Script Referrer Problem 7Style PHP Tipps 2008 28 01.07.2008 15:14
[Erledigt] MySql Frage: Problem mit einer etwas lomplexeren Abfrage tomtaz Datenbanken 5 24.06.2008 22:36
[Erledigt] Problem mit ereg Funktion! Horvi PHP Tipps 2008 7 20.05.2008 14:29
[Erledigt] DB-Einträge nach Anfangsbuchstabe auslesen - Problem bei Zahlen/Sonderzeic Teela PHP Tipps 2008 6 19.05.2008 19:29
[Erledigt] Problem mit DATETIME TheJT PHP Tipps 2008 2 19.05.2008 15:30
[Erledigt] Session Problem karina_02 PHP Tipps 2008 6 18.05.2008 22:37
[Erledigt] if &quot;schleife&quot; == &quot;schleife&quot;&quot; - Problem Slappi PHP Tipps 2008 2 17.05.2008 21:42
[Erledigt] Problem mit Tutorial PrisonerOfDreams PHP Tipps 2008 4 16.05.2008 11:59
[Erledigt] [erledigt] Problem mit Count() Datenbanken 7 17.03.2005 13:59
Rechnen mit Zeit - Problem Datenbanken 6 15.12.2004 11:46
Smarty und PHP-Skript Problem PHP Tipps 2004-2 2 03.12.2004 22:27

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
php mal 0,5 rechnen, rechnen mit dezimalzahlen 0, php rechnen mit dezimalzahlen, mysql rechnen mit dezimalzahlen, php berechnung str_replace, php rechnen str_replace, rechnen mit null php, php mit null rechnen, str_replace in php, php rechnen mit dezimalwerten, mit null rechnen php, php rechnen * 0.5, php rechnung mit0,, php rechnen mit dezimal, php mit dezimalzahlen rechnen, php rechnen dezimalzahlen, php rechnen mit dezimalzahlen funktioniert nicht, 0,rechnen, php rechnen mit dezimalzahlen formular, php str_replace rechnen

Alle Zeitangaben in WEZ +2. Es ist jetzt 16:05 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum