Rundung eine Java BigDecimal zum nächsten Intervall
Habe ich einen BigDecimal-Berechnung Ergebnis, das ich brauche, um Runden auf den nächsten angegebenen Intervall (in diesem Fall ist es der financial market tick size).
z.B. Preis [Tick Size] -> Gerundet Preis
100.1 [0.25] -> 100
100.2 [0.25] -> 100.25
100.1 [0.125] -> 100.125
100.2 [0.125] -> 100.25
Dank.
Update: schnaader Lösung, übersetzt in Java/BigDecimal Begriffe:
price = price.divide(tick).setScale(0, RoundingMode.HALF_UP).multiply(tick)
- Für die Auffindbarkeit, diese Technik kann verwendet werden, um eine Prozentsatz-Wert zu einem beliebigen Bruchteil einer basis zeigen.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Könnten Sie normalisieren tick-Größe und verwenden Sie dann die übliche Rundung Methoden:
So sollte es sein:
Beachten Sie auch, dass Sie zu haben scheinen, um die richtige Rundung-Modus für BigDecimals. Sehen BigDecimal Docs zum Beispiel. So sollten Sie sicherstellen, dass diese korrekt schreiben und einige tests, um zu überprüfen Sie die Richtigkeit des Codes.
//wobei p= Preis und t= tick increment