Vinzenz: Mathematik: Wie erstelle ich Skala mit "runden" Einträgen?

Beitrag lesen

Hallo Andreas,

$absolut_max = $max + 0,1 * $diff;
$absolut_min = $min - 0,1 * $diff;
Tipp: Rechne überall und immer mit Integerwerten, dann ist z.B. der Modulo-Operator Dein Freund, damit kannst Du viele Nullen finden...
Wie denn? Wenn ich 10 % addieren will dann kann ich nicht mit Integer-Werten rechnen, entweder ich Teile durch einen Wert, oder ich Multipliziere mit einer Dezimal-Zahl.

Caste auf Integer ...
$absolute_max = (int) ($max + 0,1 * $diff);
Das was Du hinter dem Komma verlierst, sollte unbedeutend sein, insbesondere, wenn Du als Grundeinheit Cent nimmst...

Und wie soll ich mit Modulo eine solche Zahl finden? Die Methode die ich angewendet habe würde z.B. bei Zahlen zw. 100.000 und 250.000 maximal 5 Schleifendruchläufe benötigen. Wenn Du aber alle Zahlen durchgehst, und jede Zahl mit Modulo überprüfst, dann brauchst Du 150.000 Durchläufe!
Oder geht das auch ohen Schleife, nur mit Rechenoperationen? Ich könnte mir da nichts vorstellen.

Nein, natürlich nimmst Du eine Schleife:

ungefähr so:

$max_nullen = $obergrenze;
$divisor    = 10;

while ( $max_nullen - ($max_nullen % $divisor) > $untergrenze ) {
    $max_nullen -= $maxnullen % $divisor;
    $divisor    *= 10;
}

$max_nullen müsste jetzt den gewünschten Wert enthalten.

Den Spezialfall, dass es keine Zahl dazwischen gibt, lasse ich Dir als Fingerübung ;-)

Voraussetzung ist selbstverständlich, dass gilt:

<kein_php mathe="ja">
 $obergrenze > $untergrenze > 0
</kein_php>

stimmt, aber soweit bin ich noch gar nicht gewesen, mir geht es erstmal ums Prinzip, später werde ich das sicher so machen.

Nein! Fang' gleich damit an.

Gruss,

Vinzenz