Eigene Rundungslogik in 0,5 Schritten

Hallo zusammen,

bin schon die ganze Zeit am überlegen wie ich das Problem am elegantesten lösen kann.
Und zwar geht es darum Zahlen (BigDecimal) auf die halben Zahlen zu runden.

So soll beispielsweise bei 0.8, 1.0 das Ergebnis 1.0 sein.
Aus 1.01, 1.49 oder 1.5 ist das Ergebnis 1.5
Aus 1.51, ..... wird 2.0
...usw.


Wäre super wenn jemand ne schöne Lösung parat hätte.

Danke
Andreas
 
1. Wert verdoppeln
2. Ceil-Funktion auf das Ergebnis aus 1.
3. Ergebnis aus 2. halbieren

So würde ich das machen :D

0.8 -> 1.6 -> 2.0 -> 1.0
1.01 -> 2.02 -> 3 -> 1.5
1.49 -> 2.98 -> 3 -> 1.5
1.51 -> 3.02 -> 4 -> 2
 
Damit es auch mit Werten wie z.B. 566.05 (->566.5) t, hier mal meine Umsetzung.

Java:
BigDecimal valueToRound = BigDecimal.valueOf(566.05);
valueToRound = valueToRound.multiply(BigDecimal.valueOf(2));
valueToRound = new BigDecimal(valueToRound.toString(), new MathContext(valueToRound.precision()-valueToRound.scale(), RoundingMode.CEILING));
valueToRound = valueToRound.divide(BigDecimal.valueOf(2));
 

Neue Beiträge

Zurück