Erweiterte Version - Nun sind Negative Zahlen, Nullenauffüllung und fehlerhafte Parameter kein Problem mehr.
Runden.as
Im Flash FilmPHP-Code:// --------------------------------------------------------------------
// Klasse: Runden (Extended)
//
// Definition: Runden.runden_extended(pZahl, Rundungsmodus, DezimalZeichen, Genauigkeit)
//
// pZahl - zu rundende Zahl
// pModus - Rundungsmodus (Auswahl: ceil, floor, round)
// pDezZeichen - Dezimal Trennzeichen
// pStellen - Prezision (Genauigkeit) - legt die Anzahl der Stellen nach dem Dezimalzeichen fest
//
// Syntax:
// gerundet_1 = Runden.runden_extended(zahl_1,"ceil", ",", 2);
//
// Anmerkung zu pModus - folgende Modien stehen zur Verfügung:
// "ceil" : (bsp: 10.1 -> 11 / 10.6 -> 11)
// "floor" : (bsp: 10.8 -> 10 / 10.6 -> 10)
// "round" : (bsp: 10.1 -> 10 / 10.6 -> 11)
//
// "ceil" : ceil (Obergrenze - ist die nächstliegende Ganzzahl, die größer oder gleich der Zahl ist)
// "floor" : floor (Untergrenze - ist die nächstliegende Ganzzahl, die kleiner oder gleich der angegebenen Zahl ist)
// "round" : round (Runden - rundet den Wert des Parameters x auf die nächstliegende Ganzzahl auf oder ab und gibt diese zurück)
//
// ---------------------------------------------------------------------
class Runden extends Number {
static function runden_extended(pZahl:Number, pModus:String, pDezZeichen:String, pStellen:Number) {
if ("ceil-floor-round".indexOf(pModus) == -1) {
return "runden-Fehler: unbekannter Modus!";
}
if (".,".indexOf(pDezZeichen) == -1) {
return "runden-Fehler: unbekanntes DezZeichen!";
}
if (pStellen != Math.abs(Math.round(pStellen))) {
return "runden-Fehler: ungeeignete Stellenangabe!";
}
var resultat = String(Math[pModus](pZahl*Math.pow(10, pStellen))/Math.pow(10, pStellen));
if (pStellen && resultat.indexOf("e") == -1) {
resultat += (resultat.indexOf(".") != -1) ? "" : ".";
var nullen = resultat.indexOf(".")-resultat.length+1+pStellen;
while (nullen--) {
resultat += "0";
}
}
return resultat.split(".").join(pDezZeichen);
}
}
Resultate:PHP-Code:// Verwenden - Beispiele
// Positive Werte
zahl_1 = 999.444536455;
zahl_2 = 999.444536455;
zahl_3 = 999.444536455;
zahl_4 = 999.44;
gerundet_1 = Runden.runden_extended(zahl_1, "ceil", ",", 2);
gerundet_2 = Runden.runden_extended(zahl_2, "floor", ".", 3);
gerundet_3 = Runden.runden_extended(zahl_3, "round", ",", 3);
gerundet_4 = Runden.runden_extended(zahl_4, "round", ",", 3);
trace("-----------------------------");
trace("Zahl 1 original: "+zahl_1);
trace("Zahl 1 gerundet: "+gerundet_1);
trace("Zahl 2 original: "+zahl_2);
trace("Zahl 2 gerundet: "+gerundet_2);
trace("Zahl 3 original: "+zahl_3);
trace("Zahl 3 gerundet: "+gerundet_3);
trace("Zahl 4 original: "+zahl_4);
trace("Zahl 4 gerundet: "+gerundet_4);
trace("-----------------------------");
// Negative Werte + Auffüllung
zahl_1 = -0.00123456789e-12;
zahl_2 = -123.456789;
zahl_3 = -0.35;
zahl_4 = 20;
trace("ceil : "+Runden.runden_extended(zahl_1, "ceil", ",", 0));
trace("floor: "+Runden.runden_extended(zahl_1, "floor", ".", 1));
trace("round: "+Runden.runden_extended(zahl_1, "round", ",", 20));
trace("ceil : "+Runden.runden_extended(zahl_2, "ceil", ",", 0));
trace("floor: "+Runden.runden_extended(zahl_2, "floor", ".", 4));
trace("round: "+Runden.runden_extended(zahl_2, "round", ",", 4));
trace("ceil : "+Runden.runden_extended(zahl_3, "ceil", ",", 0));
trace("floor: "+Runden.runden_extended(zahl_3, "floor", ".", 4));
trace("round: "+Runden.runden_extended(zahl_3, "round", ",", 4));
trace("ceil : "+Runden.runden_extended(zahl_4, "ceil", ",", 0));
trace("floor: "+Runden.runden_extended(zahl_4, "floor", ".", 4));
trace("round: "+Runden.runden_extended(zahl_4, "round", ",", 4));
trace("-----------------------------");
Liebe Grüsse-----------------------------
Zahl 1 original: 999.444536455
Zahl 1 gerundet: 999,45
Zahl 2 original: 999.444536455
Zahl 2 gerundet: 999.444
Zahl 3 original: 999.444536455
Zahl 3 gerundet: 999,445
Zahl 4 original: 999.44
Zahl 4 gerundet: 999,440
-----------------------------
ceil : 0
floor: -0.1
round: -1,23457e-15
ceil : -123
floor: -123.4568
round: -123,4568
ceil : 0
floor: -0.3500
round: -0,3500
ceil : 20
floor: 20.0000
round: 20,0000
-----------------------------
Matze K.
Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)