Dziwne zjawisko przy BigDecimal

Dziwne zjawisko przy BigDecimal
MC
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 145
0

Witam,

Mam taki kod:

Kopiuj
BigDecimal mnoznikWez = new BigDecimal(user.getMnoz());
        mnoznikWez = mnoznikWez.subtract(new BigDecimal("0.01"));
        mnoznikWez.setScale(2,RoundingMode.DOWN);
        dataRef.child("UsersLogin").child(Logowanie.id).child("mnoz").setValue(mnoznikWez);

mam też drugi taki kod tylko zamiast .subtract jest .add
i to działa tylko w dwie strony:
mogę odjąć i odejmuje wtedy o 0.02 zamiast 0.01, jak kliknę jeszcze raz odjąć to już nie odejmuje, potem mogę dodać i dodaje o 0.02 i wtedy mogę tylko odjąć, dodanie nie działa
o co chodzi?

Wibowit
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: XML Hills
2

BigDecimal jest niemutowalny:

Immutable, arbitrary-precision signed decimal numbers.

setScale zwraca nowego BigDecimala:

Note that since BigDecimal objects are immutable, calls of this method do not result in the original object being modified, contrary to the usual convention of having methods named setX mutate field X. Instead, setScale returns an object with the proper scale; the returned object may or may not be newly allocated.

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.