X-Git-Url: https://git.ktnx.net/?p=mobile-ledger.git;a=blobdiff_plain;f=app%2Fsrc%2Fmain%2Fjava%2Fnet%2Fktnx%2Fmobileledger%2Fjson%2Fv1_15%2FParsedQuantity.java;fp=app%2Fsrc%2Fmain%2Fjava%2Fnet%2Fktnx%2Fmobileledger%2Fjson%2Fv1_15%2FParsedQuantity.java;h=f40968307301df8aa41ee7652bc4003d055a2aa7;hp=7ce1d12d3816efc5f1bc0a8b9906a7e1748105ee;hb=f46c876dcda0477c4619ef690fa0b7a480d9d8e3;hpb=d6d15ebf2287b3e9d7c213241367ef053e971e60 diff --git a/app/src/main/java/net/ktnx/mobileledger/json/v1_15/ParsedQuantity.java b/app/src/main/java/net/ktnx/mobileledger/json/v1_15/ParsedQuantity.java index 7ce1d12d..f4096830 100644 --- a/app/src/main/java/net/ktnx/mobileledger/json/v1_15/ParsedQuantity.java +++ b/app/src/main/java/net/ktnx/mobileledger/json/v1_15/ParsedQuantity.java @@ -20,21 +20,39 @@ package net.ktnx.mobileledger.json.v1_15; import com.fasterxml.jackson.annotation.JsonIgnoreProperties; @JsonIgnoreProperties(ignoreUnknown = true) -public class ParsedQuantity extends net.ktnx.mobileledger.json.v1_14.ParsedQuantity { - private float floatingPoint; - private boolean floatingPointSet = false; - public float getFloatingPoint() { - if (!floatingPointSet) - throw new IllegalStateException("floatingPoint is not set"); - return floatingPoint; - } - public void setFloatingPoint(float floatingPoint) { - this.floatingPoint = floatingPoint; - floatingPointSet = true; +public class ParsedQuantity { + private long decimalMantissa; + private int decimalPlaces; + public ParsedQuantity() { + } + public ParsedQuantity(String input) { + parseString(input); + } + public long getDecimalMantissa() { + return decimalMantissa; + } + public void setDecimalMantissa(long decimalMantissa) { + this.decimalMantissa = decimalMantissa; + } + public int getDecimalPlaces() { + return decimalPlaces; + } + public void setDecimalPlaces(int decimalPlaces) { + this.decimalPlaces = decimalPlaces; } public float asFloat() { - if (floatingPointSet) - return floatingPoint; return (float) (decimalMantissa * Math.pow(10, -decimalPlaces)); } + public void parseString(String input) { + int pointPos = input.indexOf('.'); + if (pointPos >= 0) { + String integral = input.replace(".", ""); + decimalMantissa = Long.parseLong(integral); + decimalPlaces = input.length() - pointPos - 1; + } + else { + decimalMantissa = Long.parseLong(input); + decimalPlaces = 0; + } + } }