Zahl runden

Alice

Erfahrenes Mitglied
Hallo Zusammen. :)

Für ein PHP-Skript von mir ist es wichtig dass das Skript Zahlen rundet.

Mir sind 3 verschiedene Methoden bekannt.

1. floor = abrunden
2. round = runden (Kaufmännisch)
3. ceil = aufrunden

Das Problem ist dass das Skript entweder ganze Zahlen errechnet oder Zahlen wie 8,5 oder 0,5 usw. Diese Zahlen lassen sich aber nicht so runden wie ich es gerne hätte.

Wenn z.B. 0,5 errechnet wird, soll:

$Var[0] = 0
$Var[1] = 1

sein und nicht 0,5. Denn 0,5 kann ich nur auf oder abrunden.

Gibt es eine Möglichkeit das errechnete zu verteilen?
 
Ich verstehe dich nicht ganz.. Willst du ein Array machen, in dem jeweils die Werte von floor und ceil drin sind?
 
Schreib selber eine Funktion

PHP:
<?php

function round2array($number){
	$array[] = floor($number);
	$array[] = ceil($number);
	return $array;
}

$Var = round2array(0.5);

?>
 
Ich versuche es mal an einem Besipiel zu zeigen.

Stell dir bitte einfach vor das PHP-Skript hätte die Werte "200" und "199" bereits errechnet.

PHP:
$Soll_Breite = '200';
$Ist_Breite = '199';   

Ich möchte jetzt unbedingt auf "200" kommen. ;) :D

$Mathe = ($Soll_Breite - $Ist_Breite)/2; 
                   $Mathe = array($Mathe,$Mathe);
                   if( ($Mathe[0] +$$Mathe[1]) < ($Soll_Breite - $Ist_Breite) ){ 
                        $Mathe[1]++;
                  }

Das Ergebniss ist in diesem Fall:

$Mathe = 1 / 2
$Mathe = 0,5
$Mathe[0] = 0,5
$Mathe[1] = 0,5

Und genau das möchte ich nicht. Ich möchte ja auf ($Soll_Breite) 200 kommen und nicht auf ($Soll_Breite) 121. Ich hätte es gerne so.

$Mathe = 1 / 2
$Mathe = 0,5
Hier muss etwas passieren...
$Mathe[0] = 0
$Mathe[1] = 1
 
Ich habe deinen Post erst gesehen als ich meinen schon geschrieben hatte.

Mit deinem Code bekomme ich die Meldung: Warning: Cannot use a scalar value as an array in :confused:
 
Ich glaube, du musst noch die Variable als Array deklarieren. Du kannst es auch noch kürzen:
PHP:
<?php

function round2array($number)
{
    return array(floor($number), ceil($number));
}

$Var = round2array(0.5);

?>
 
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?
 
Testscript:
PHP:
<?php

function round2array($number){
    $array[] = floor($number);
    $array[] = ceil($number);
    return $array;
}

$Var = round2array(0.5);
var_dump($Var);
?>
ergibt
Code:
array(2) { [0]=>  float(0) [1]=>  float(1) }

Was übergibst du der Funktion? Schon dein '($Soll_Breite - $Ist_Breite)/2' oder?
 
Zurück