Auf-und abrunden Logik einbauen

Hallo @LukasK

ich würde ganz gerne eine Logik einbauen die alles auf *,49 oder ,99 setzt, je nachdem wie der Quellwert ist.

Beispiele
162,502363 auf 162,49
194,972595 auf 194,99
227,480627 auf 227,49

Hast du eine Idee wie ich diese Logik aufbaue?

Schöne grüße
Christoph

Hallo Christoph,

versuch’s mal mit dem folgenden Skript:

<#assign decimal_part = price?number - price?number?floor>
<#if (decimal_part gt 0.75)>${price?number?floor + 0.99}<#elseif (decimal_part lt 0.25)>${price?number?floor - 0.01}<#else>${price?number?floor + 0.49}</#if>

Alles über .75 wird auf .99 aufgerundet. Alles zwischen .75 und .25 wird auf .49 gerundet und unter 0.25 wird auf .99 abgerundet. War jetzt nicht ganz klar, wie genau du runden willst. Das musst du möglicherweise noch anpassen.

Du benutzt oben in deinen Beispielen Kommata als Dezimaltrenner. Wenn das auch in deinen Daten so ist, musst du die vor dem Rechnen durch Punkte ersetzen, sonst versteht Freemarker die nicht als Zahl. Alle price?number müsstest du dann durch price?replace(',' , '.')?number ersetzen.

Hier nochmal eine Beispiel mit Zwischenschritten.

EDIT:
Skript hat am Anfang 100.10 aufgerundet auf 100.99 und nicht abgerundet auf 99.99. Fehler ist im Skript und in Transformy-Beispiel korrigiert.

Gruß
Gustav