Zahl runden

So jetzt geht es. :)

Aber leider möchte er jetzt mit geraden Zahlen nicht mehr arbeiten. Kann es sein das diese Funktion nur bei Zahlen mit Komma greift? Oder sollte er auch bei ganzen Zahlen greifen wie z.B. 10?

Teste es aus. Mach dir eine Testdatei und schau was sie ausspuckt. Oder müssen wir für dich testen?
 
Ja genau das übergebe ich.

PHP:
($Soll_Breite - $Ist_Breite)/2

Diesen Teil habe ich gelöscht.

PHP:
                   $Mathe = array($Mathe,$Mathe);
                   if( ($Mathe[0] +$$Mathe[1]) < ($Soll_Breite - $Ist_Breite) ){ 
                        $Mathe[1]++;
                  }
 
Wenn "$Ist_Breite" eine Zahl wie 200 oder 300 usw ist, läuft das Skript nicht mehr sauber. Jetzt müssen die Zahlen ungerade sein.
 
hab mein Script mit 10 anstelle von 0.5 getestet
Code:
array(2) { [0]=>  float(10) [1]=>  float(10) }
Ergo geht.

Wenn du deine Aufgabenstellung klarer beschreiben würdest, dann hätten wir wahrscheinlich viel schönere Lösungen auf Lager
 
Ok ich versuche es mal.

Mit einem PHP-Skript wird eine Grafik erstellt. Je nach Eingabe ins Formular werden verschiedene Grafiken geladen und aus den verschiedenen Grafiken eine einzige Grafik gebildet. Funktioniert auch perfekt.

Jetzt möchte ich aber gerne Zwischenraum-Grafiken einbauen. Deswegen habe ich die Variable $Soll_Breite erstellt die duch das Formular mit einem Wert wie 200, 250, 300 usw. gefüllt wird.

Jetzt soll das Skript die User eingaben prüfen und die Grafik-Breite berechnen. Die $Soll_Breite wird hierbei erst einmal ignoriert.
Ist nun die Tatsächliche Breite ermittelt soll folgendes passieren.

Soll-Breite - Tatsächliche Breite = Fehlende Breite

Ist die Soll-Breite 200 und die Tatsächliche Breite 199, ergibt das einen Wert von 1. Also es fehlt 1px in der Grafik um die gewünschte Breite zu erreichen.

Mit diesem Code:
PHP:
$Soll_Breite = '200';
$Ist_Breite = '199';   

$Mathe = ($Soll_Breite - $Ist_Breite)/2; 
                   $Mathe = array($Mathe,$Mathe);
                   if( ($Mathe[0] +$$Mathe[1]) < ($Soll_Breite - $Ist_Breite) ){ 
                        $Mathe[1]++;
                  }
errechnet das Skript das 1px fehlt und teilt diese auf in $Mathe[0] und $Mathe[1]. Da der inhalt aber 0,5 ist und es keine halben pixel gibt, wird die Grafik am Ende 199px oder 201px Breit je nach "Rundungs-Methode".

Mit dem Code von yaslaw macht er nun das richtige und erstellt eine 200px Grafik aber wenn es Aufgrund der Grafiken keine "Komma-Zahlen" zustande kommt, passiert nichts. Die Grafik wird ohne Zwischenraum-Grafiken erstellt.
 
Hi

wenn ich dich dich richtig verstanden habe, willst du die Zahl 10 runden. Erkläre mir mal wie das gehen soll?
 
Nein da du hast du mich glaube ich falsch verstanden.

Soll-Breite MINUS Ist-Breite = 1 -> Es fehlt 1px.
Soll-Breite MINUS Ist-Breite = 10 -> Es fehlen 10px.
Soll-Breite MINUS Ist-Breite = 32 -> Es fehlen 32px.
Soll-Breite MINUS Ist-Breite = 3 -> Es fehlen 3px.
Soll-Breite MINUS Ist-Breite = 0 -> Es fehlt kein px.

Wenn ich meinen Code verwenden, wird das Ergebniss durch zwei geteilt und an zwei Variablen übergeben. -> $Mathe[0] und $Mathe[1].

Soll-Breite MINUS Ist-Breite = 32 -> Es fehlen 32px.
$Mathe[0] = 16px
$Mathe[1] = 16px

So geht es auch perfekt.

Ich habe das Problem mit Ergebnissen wo eine Komma-Zahl ausgerechnet wird.

Soll-Breite MINUS Ist-Breite = 1 -> Es fehlt 1px.
$Mathe[0] = 0,5px
$Mathe[1] = 0,5px

In so einem Fall soll so etwas passieren:
$Mathe[0] = 0px
$Mathe[1] = 1px

oder

Soll-Breite MINUS Ist-Breite = 3 -> Es fehlen 3px.
$Mathe[0] = 1,5px
$Mathe[1] = 1,5px

In so einem Fall soll so etwas passieren:
$Mathe[0] = 1px
$Mathe[1] = 2px
 
Zuletzt bearbeitet:
Hi timestamp. :)

Leider funktioniert es damit auch nicht richtig.

Das einzige was zu 99% richtig arbeitet ist dieser Code:
PHP:
       $Mathe = floor(($Soll_Width - $Ist_Width)/2); 
       $Mathe= array($Mathe,$Mathe);
                if( ($Mathe[0] + $Mathe[1]) < ($Soll_Width - $Ist_Width) ){ 
                     $Mathe[1]++;

Aber der Code ist nicht 100%ig.
 
Zurück