HallO!
Caste auf Integer ...
$absolute_max = (int) ($max + 0,1 * $diff);
Du meinst:
$absolute_max = (int($max + 0,1 * $diff));
oder wie habe ich das zu verstehen? Oder vielleicht besser abs() oder round()?
Das was Du hinter dem Komma verlierst, sollte unbedeutend sein, insbesondere, wenn Du als Grundeinheit Cent nimmst...
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;
}
Ah ja, das sieht in der Tat etwas besser aus ;-)
Aber geht das eigentlich auch anders herum? Also dass ich vin meiner Untergrenze langsam hochgehe? Wäre doch eigentlich eh logischer, oder?
Also sowas:
$max_nullen = $untergrenze
$divisor = 10;
while ( $max_nullen + ($divisor - $max_nullen % $divisor) < $obergrenze ) {
$max_nullen += $divisor - $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:
Vielleicht einfach "wenn $max_nullen == $untergrenze und $max_nullen != $obergrenze, dann ($untergrenze + $obergrenze)/2"
$obergrenze > $untergrenze > 0
logisch.
Danke Dir!
Grüße
Andreas