home *** CD-ROM | disk | FTP | other *** search
- package java.text;
-
- import java.io.IOException;
- import java.io.ObjectInputStream;
- import java.util.Hashtable;
- import java.util.Locale;
- import java.util.ResourceBundle;
-
- public class DecimalFormat extends NumberFormat {
- private static final int STATUS_INFINITE = 0;
- private static final int STATUS_POSITIVE = 1;
- private static final int STATUS_LENGTH = 2;
- private transient DigitList digitList = new DigitList();
- private String positivePrefix = "";
- private String positiveSuffix = "";
- private String negativePrefix = "-";
- private String negativeSuffix = "";
- private int multiplier = 1;
- private byte groupingSize = 3;
- private boolean decimalSeparatorAlwaysShown = false;
- private transient boolean isCurrencyFormat = false;
- private DecimalFormatSymbols symbols;
- private transient boolean useExponentialNotation;
- private transient byte minExponentDigits;
- private static final char PATTERN_ZERO_DIGIT = '0';
- private static final char PATTERN_GROUPING_SEPARATOR = ',';
- private static final char PATTERN_DECIMAL_SEPARATOR = '.';
- private static final char PATTERN_PER_MILLE = '‰';
- private static final char PATTERN_PERCENT = '%';
- private static final char PATTERN_DIGIT = '#';
- private static final char PATTERN_SEPARATOR = ';';
- private static final char PATTERN_EXPONENT = 'E';
- private static final char CURRENCY_SIGN = '¤';
- private static final char QUOTE = '\'';
- static final long serialVersionUID = 864413376551465018L;
- private static Hashtable cachedLocaleData = new Hashtable(3);
-
- public DecimalFormat() {
- Locale var1 = Locale.getDefault();
- String var2 = (String)cachedLocaleData.get(var1);
- if (var2 == null) {
- ResourceBundle var3 = ResourceBundle.getBundle("java.text.resources.LocaleElements", var1);
- String[] var4 = var3.getStringArray("NumberPatterns");
- var2 = var4[0];
- cachedLocaleData.put(var1, var2);
- }
-
- this.symbols = new DecimalFormatSymbols(var1);
- this.applyPattern(var2, false);
- }
-
- public DecimalFormat(String var1) {
- this.symbols = new DecimalFormatSymbols(Locale.getDefault());
- this.applyPattern(var1, false);
- }
-
- public DecimalFormat(String var1, DecimalFormatSymbols var2) {
- this.symbols = (DecimalFormatSymbols)var2.clone();
- this.applyPattern(var1, false);
- }
-
- public StringBuffer format(double var1, StringBuffer var3, FieldPosition var4) {
- var4.setBeginIndex(0);
- var4.setEndIndex(0);
- if (Double.isNaN(var1)) {
- if (var4.getField() == 0) {
- var4.setBeginIndex(var3.length());
- }
-
- var3.append(this.symbols.getNaN());
- if (var4.getField() == 0) {
- var4.setEndIndex(var3.length());
- }
-
- return var3;
- } else {
- boolean var5 = var1 < (double)0.0F;
- if (var5) {
- var1 = -var1;
- }
-
- if (this.multiplier != 1) {
- var1 *= (double)this.multiplier;
- }
-
- if (Double.isInfinite(var1)) {
- var3.append(var5 ? this.negativePrefix : this.positivePrefix);
- if (var4.getField() == 0) {
- var4.setBeginIndex(var3.length());
- }
-
- var3.append(this.symbols.getInfinity());
- if (var4.getField() == 0) {
- var4.setEndIndex(var3.length());
- }
-
- var3.append(var5 ? this.negativeSuffix : this.positiveSuffix);
- return var3;
- } else {
- DigitList var7 = this.digitList;
- synchronized(var7){}
-
- StringBuffer var6;
- try {
- this.digitList.set(var1, this.useExponentialNotation ? ((NumberFormat)this).getMaximumIntegerDigits() + ((NumberFormat)this).getMaximumFractionDigits() : ((NumberFormat)this).getMaximumFractionDigits(), !this.useExponentialNotation);
- var6 = this.subformat(var3, var4, var5, false);
- } catch (Throwable var10) {
- throw var10;
- }
-
- return var6;
- }
- }
- }
-
- public StringBuffer format(long var1, StringBuffer var3, FieldPosition var4) {
- var4.setBeginIndex(0);
- var4.setEndIndex(0);
- boolean var5 = var1 < 0L;
- if (var5) {
- var1 = -var1;
- }
-
- if (this.multiplier != 1 && this.multiplier != 0) {
- boolean var6 = false;
- if (var1 < 0L) {
- long var7 = Long.MIN_VALUE / (long)this.multiplier;
- var6 = var1 < var7;
- } else {
- long var14 = Long.MAX_VALUE / (long)this.multiplier;
- var6 = var1 > var14;
- }
-
- if (var6) {
- double var16 = (double)(var5 ? -var1 : var1);
- return this.format(var16, var3, var4);
- }
- }
-
- var1 *= (long)this.multiplier;
- DigitList var15 = this.digitList;
- synchronized(var15){}
-
- StringBuffer var13;
- try {
- this.digitList.set(var1, this.useExponentialNotation ? ((NumberFormat)this).getMaximumIntegerDigits() + ((NumberFormat)this).getMaximumFractionDigits() : 0);
- var13 = this.subformat(var3, var4, var5, true);
- } catch (Throwable var10) {
- throw var10;
- }
-
- return var13;
- }
-
- private StringBuffer subformat(StringBuffer var1, FieldPosition var2, boolean var3, boolean var4) {
- char var5 = this.symbols.getZeroDigit();
- int var6 = var5 - 48;
- char var7 = this.symbols.getGroupingSeparator();
- char var8 = this.isCurrencyFormat ? this.symbols.getMonetaryDecimalSeparator() : this.symbols.getDecimalSeparator();
- if (this.digitList.isZero()) {
- var3 = false;
- this.digitList.decimalAt = 0;
- }
-
- var1.append(var3 ? this.negativePrefix : this.positivePrefix);
- if (this.useExponentialNotation) {
- if (var2.getField() == 0) {
- var2.setBeginIndex(var1.length());
- var2.setEndIndex(-1);
- } else if (var2.getField() == 1) {
- var2.setBeginIndex(-1);
- }
-
- int var9 = this.digitList.decimalAt;
- int var10 = ((NumberFormat)this).getMaximumIntegerDigits();
- if (var10 > 1 && var10 != ((NumberFormat)this).getMinimumIntegerDigits()) {
- var9 -= var9 < 0 ? var10 : 1;
- var9 = var9 / var10 * var10;
- } else {
- var9 -= ((NumberFormat)this).getMinimumIntegerDigits();
- }
-
- int var11 = ((NumberFormat)this).getMinimumIntegerDigits() + ((NumberFormat)this).getMinimumFractionDigits();
- int var12 = this.digitList.isZero() ? ((NumberFormat)this).getMinimumIntegerDigits() : this.digitList.decimalAt - var9;
- int var13 = this.digitList.count;
- if (var11 > var13) {
- var13 = var11;
- }
-
- for(int var14 = 0; var14 < var13; ++var14) {
- if (var14 == var12) {
- if (var2.getField() == 0) {
- var2.setEndIndex(var1.length());
- }
-
- var1.append(var8);
- if (var2.getField() == 1) {
- var2.setBeginIndex(var1.length());
- }
- }
-
- var1.append(var14 < this.digitList.count ? (char)(this.digitList.digits[var14] + var6) : var5);
- }
-
- if (var2.getField() == 0) {
- if (var2.getEndIndex() < 0) {
- var2.setEndIndex(var1.length());
- }
- } else if (var2.getField() == 1) {
- if (var2.getBeginIndex() < 0) {
- var2.setBeginIndex(var1.length());
- }
-
- var2.setEndIndex(var1.length());
- }
-
- var1.append(this.symbols.getExponentialSymbol());
- if (this.digitList.isZero()) {
- var9 = 0;
- }
-
- boolean var15 = var9 < 0;
- if (var15) {
- var9 = -var9;
- }
-
- var1.append(var15 ? this.negativePrefix : this.positivePrefix);
- this.digitList.set((long)var9);
-
- for(int var16 = this.digitList.decimalAt; var16 < this.minExponentDigits; ++var16) {
- var1.append(var5);
- }
-
- for(int var17 = 0; var17 < this.digitList.decimalAt; ++var17) {
- var1.append(var17 < this.digitList.count ? (char)(this.digitList.digits[var17] + var6) : var5);
- }
-
- var1.append(var15 ? this.negativeSuffix : this.positiveSuffix);
- } else {
- if (var2.getField() == 0) {
- var2.setBeginIndex(var1.length());
- }
-
- int var20 = ((NumberFormat)this).getMinimumIntegerDigits();
- int var21 = 0;
- if (this.digitList.decimalAt > 0 && var20 < this.digitList.decimalAt) {
- var20 = this.digitList.decimalAt;
- }
-
- if (var20 > ((NumberFormat)this).getMaximumIntegerDigits()) {
- var20 = ((NumberFormat)this).getMaximumIntegerDigits();
- var21 = this.digitList.decimalAt - var20;
- }
-
- int var22 = var1.length();
-
- for(int var23 = var20 - 1; var23 >= 0; --var23) {
- if (var23 < this.digitList.decimalAt && var21 < this.digitList.count) {
- var1.append((char)(this.digitList.digits[var21++] + var6));
- } else {
- var1.append(var5);
- }
-
- if (((NumberFormat)this).isGroupingUsed() && var23 > 0 && this.groupingSize != 0 && var23 % this.groupingSize == 0) {
- var1.append(var7);
- }
- }
-
- if (var2.getField() == 0) {
- var2.setEndIndex(var1.length());
- }
-
- boolean var24 = ((NumberFormat)this).getMinimumFractionDigits() > 0 || !var4 && var21 < this.digitList.count;
- if (!var24 && var1.length() == var22) {
- var1.append(var5);
- }
-
- if (this.decimalSeparatorAlwaysShown || var24) {
- var1.append(var8);
- }
-
- if (var2.getField() == 1) {
- var2.setBeginIndex(var1.length());
- }
-
- for(int var25 = 0; var25 < ((NumberFormat)this).getMaximumFractionDigits() && (var25 < ((NumberFormat)this).getMinimumFractionDigits() || !var4 && var21 < this.digitList.count); ++var25) {
- if (-1 - var25 > this.digitList.decimalAt - 1) {
- var1.append(var5);
- } else if (!var4 && var21 < this.digitList.count) {
- var1.append((char)(this.digitList.digits[var21++] + var6));
- } else {
- var1.append(var5);
- }
- }
-
- if (var2.getField() == 1) {
- var2.setEndIndex(var1.length());
- }
- }
-
- var1.append(var3 ? this.negativeSuffix : this.positiveSuffix);
- return var1;
- }
-
- public Number parse(String var1, ParsePosition var2) {
- if (var1.regionMatches(var2.index, this.symbols.getNaN(), 0, this.symbols.getNaN().length())) {
- var2.index += this.symbols.getNaN().length();
- return new Double(Double.NaN);
- } else {
- boolean[] var3 = new boolean[2];
- if (!this.subparse(var1, var2, this.digitList, false, var3)) {
- return null;
- } else {
- double var4 = (double)0.0F;
- long var6 = 0L;
- boolean var8 = true;
- if (var3[0]) {
- var4 = Double.POSITIVE_INFINITY;
- } else if (this.digitList.fitsIntoLong(var3[1])) {
- var8 = false;
- var6 = this.digitList.getLong();
- } else {
- var4 = this.digitList.getDouble();
- }
-
- if (this.multiplier != 1) {
- if (var8) {
- var4 /= (double)this.multiplier;
- } else {
- var4 = (double)var6 / (double)this.multiplier;
- if (var4 < (double)0.0F) {
- var4 = -var4;
- }
- }
- }
-
- if (!var3[1]) {
- var4 = -var4;
- var6 = -var6;
- }
-
- if (this.multiplier != 1) {
- var6 = (long)var4;
- var8 = var4 != (double)var6;
- }
-
- return (Number)(var8 ? new Double(var4) : new Long(var6));
- }
- }
- }
-
- private final boolean subparse(String var1, ParsePosition var2, DigitList var3, boolean var4, boolean[] var5) {
- int var6 = var2.index;
- boolean var8 = var1.regionMatches(var6, this.positivePrefix, 0, this.positivePrefix.length());
- boolean var9 = var1.regionMatches(var6, this.negativePrefix, 0, this.negativePrefix.length());
- if (var8 && var9) {
- if (this.positivePrefix.length() > this.negativePrefix.length()) {
- var9 = false;
- } else if (this.positivePrefix.length() < this.negativePrefix.length()) {
- var8 = false;
- }
- }
-
- if (var8) {
- var6 += this.positivePrefix.length();
- } else {
- if (!var9) {
- return false;
- }
-
- var6 += this.negativePrefix.length();
- }
-
- var5[0] = false;
- if (!var4 && var1.regionMatches(var6, this.symbols.getInfinity(), 0, this.symbols.getInfinity().length())) {
- var6 += this.symbols.getInfinity().length();
- var5[0] = true;
- } else {
- var3.decimalAt = var3.count = 0;
- char var10 = this.symbols.getZeroDigit();
- char var11 = (char)(var10 + 9);
- int var12 = 48 - var10;
- char var13 = this.isCurrencyFormat ? this.symbols.getMonetaryDecimalSeparator() : this.symbols.getDecimalSeparator();
- char var14 = this.symbols.getGroupingSeparator();
- char var15 = this.symbols.getExponentialSymbol();
- boolean var16 = false;
- boolean var17 = false;
- int var18 = 0;
- int var19 = 0;
-
- int var7;
- for(var7 = -1; var6 < var1.length(); ++var6) {
- char var20 = var1.charAt(var6);
- if (var20 == var10) {
- var7 = -1;
- if (var3.count == 0) {
- if (var16) {
- --var3.decimalAt;
- }
- } else {
- ++var19;
- var3.append((char)(var20 + var12));
- }
- } else if (var20 > var10 && var20 <= var11) {
- ++var19;
- var3.append((char)(var20 + var12));
- var7 = -1;
- } else if (!var4 && var20 == var13) {
- if (((NumberFormat)this).isParseIntegerOnly() || var16) {
- break;
- }
-
- var3.decimalAt = var19;
- var16 = true;
- } else {
- if (var4 || var20 != var14 || !((NumberFormat)this).isGroupingUsed()) {
- if (!var4 && var20 == var15 && !var17) {
- ParsePosition var21 = new ParsePosition(var6 + 1);
- boolean[] var22 = new boolean[2];
- DigitList var23 = new DigitList();
- if (this.subparse(var1, var21, var23, true, var22) && var23.fitsIntoLong(var22[1])) {
- var6 = var21.index;
- var18 = (int)var23.getLong();
- if (!var22[1]) {
- var18 = -var18;
- }
-
- var17 = true;
- }
- }
- break;
- }
-
- var7 = var6;
- }
- }
-
- if (var7 != -1) {
- var6 = var7;
- }
-
- if (!var16) {
- var3.decimalAt = var19;
- }
-
- var3.decimalAt += var18;
- }
-
- if (var8) {
- var8 = var1.regionMatches(var6, this.positiveSuffix, 0, this.positiveSuffix.length());
- }
-
- if (var9) {
- var9 = var1.regionMatches(var6, this.negativeSuffix, 0, this.negativeSuffix.length());
- }
-
- if (var8 && var9) {
- if (this.positiveSuffix.length() > this.negativeSuffix.length()) {
- var9 = false;
- } else if (this.positiveSuffix.length() < this.negativeSuffix.length()) {
- var8 = false;
- }
- }
-
- if (var8 == var9) {
- return false;
- } else {
- var2.index = var6 + (var8 ? this.positiveSuffix.length() : this.negativeSuffix.length());
- var5[1] = var8;
- return true;
- }
- }
-
- public DecimalFormatSymbols getDecimalFormatSymbols() {
- try {
- return (DecimalFormatSymbols)this.symbols.clone();
- } catch (Exception var1) {
- return null;
- }
- }
-
- public void setDecimalFormatSymbols(DecimalFormatSymbols var1) {
- try {
- this.symbols = (DecimalFormatSymbols)var1.clone();
- } catch (Exception var2) {
- }
- }
-
- public String getPositivePrefix() {
- return this.positivePrefix;
- }
-
- public void setPositivePrefix(String var1) {
- this.positivePrefix = var1;
- }
-
- public String getNegativePrefix() {
- return this.negativePrefix;
- }
-
- public void setNegativePrefix(String var1) {
- this.negativePrefix = var1;
- }
-
- public String getPositiveSuffix() {
- return this.positiveSuffix;
- }
-
- public void setPositiveSuffix(String var1) {
- this.positiveSuffix = var1;
- }
-
- public String getNegativeSuffix() {
- return this.negativeSuffix;
- }
-
- public void setNegativeSuffix(String var1) {
- this.negativeSuffix = var1;
- }
-
- public int getMultiplier() {
- return this.multiplier;
- }
-
- public void setMultiplier(int var1) {
- this.multiplier = var1;
- }
-
- public int getGroupingSize() {
- return this.groupingSize;
- }
-
- public void setGroupingSize(int var1) {
- this.groupingSize = (byte)var1;
- }
-
- public boolean isDecimalSeparatorAlwaysShown() {
- return this.decimalSeparatorAlwaysShown;
- }
-
- public void setDecimalSeparatorAlwaysShown(boolean var1) {
- this.decimalSeparatorAlwaysShown = var1;
- }
-
- public Object clone() {
- try {
- DecimalFormat var1 = (DecimalFormat)super.clone();
- var1.symbols = (DecimalFormatSymbols)this.symbols.clone();
- return var1;
- } catch (Exception var2) {
- throw new InternalError();
- }
- }
-
- public boolean equals(Object var1) {
- if (var1 == null) {
- return false;
- } else if (!super.equals(var1)) {
- return false;
- } else {
- DecimalFormat var2 = (DecimalFormat)var1;
- return this.positivePrefix.equals(var2.positivePrefix) && this.positiveSuffix.equals(var2.positiveSuffix) && this.negativePrefix.equals(var2.negativePrefix) && this.negativeSuffix.equals(var2.negativeSuffix) && this.multiplier == var2.multiplier && this.groupingSize == var2.groupingSize && this.decimalSeparatorAlwaysShown == var2.decimalSeparatorAlwaysShown && this.useExponentialNotation == var2.useExponentialNotation && (!this.useExponentialNotation || this.minExponentDigits == var2.minExponentDigits) && this.symbols.equals(var2.symbols);
- }
- }
-
- public int hashCode() {
- return super.hashCode() * 37 + this.positivePrefix.hashCode();
- }
-
- public String toPattern() {
- return this.toPattern(false);
- }
-
- public String toLocalizedPattern() {
- return this.toPattern(true);
- }
-
- private String toPattern(boolean var1) {
- StringBuffer var2 = new StringBuffer();
-
- for(int var3 = 1; var3 >= 0; --var3) {
- if (var3 == 1) {
- var2.append(this.positivePrefix);
- } else {
- var2.append(this.negativePrefix);
- }
-
- if (this.useExponentialNotation) {
- for(int var4 = ((NumberFormat)this).getMaximumIntegerDigits(); var4 > 0; --var4) {
- if (var4 == this.groupingSize) {
- var2.append(var1 ? this.symbols.getGroupingSeparator() : ',');
- }
-
- if (var4 <= ((NumberFormat)this).getMinimumIntegerDigits()) {
- var2.append(var1 ? this.symbols.getZeroDigit() : '0');
- } else {
- var2.append(var1 ? this.symbols.getDigit() : '#');
- }
- }
- } else {
- int var5 = Math.max(this.groupingSize, ((NumberFormat)this).getMinimumIntegerDigits()) + 1;
-
- for(int var6 = var5; var6 > 0; --var6) {
- if (var6 == this.groupingSize) {
- var2.append(var1 ? this.symbols.getGroupingSeparator() : ',');
- }
-
- if (var6 <= ((NumberFormat)this).getMinimumIntegerDigits()) {
- var2.append(var1 ? this.symbols.getZeroDigit() : '0');
- } else {
- var2.append(var1 ? this.symbols.getDigit() : '#');
- }
- }
- }
-
- if (((NumberFormat)this).getMaximumFractionDigits() > 0 || this.decimalSeparatorAlwaysShown) {
- var2.append(var1 ? this.symbols.getDecimalSeparator() : '.');
- }
-
- for(int var7 = 0; var7 < ((NumberFormat)this).getMaximumFractionDigits(); ++var7) {
- if (var7 < ((NumberFormat)this).getMinimumFractionDigits()) {
- var2.append(var1 ? this.symbols.getZeroDigit() : '0');
- } else {
- var2.append(var1 ? this.symbols.getDigit() : '#');
- }
- }
-
- if (this.useExponentialNotation) {
- var2.append(var1 ? this.symbols.getExponentialSymbol() : 'E');
-
- for(int var8 = 0; var8 < this.minExponentDigits; ++var8) {
- var2.append(var1 ? this.symbols.getZeroDigit() : '0');
- }
- }
-
- if (var3 == 1) {
- var2.append(this.positiveSuffix);
- if (this.negativeSuffix.equals(this.positiveSuffix) && this.negativePrefix.equals(this.symbols.getMinusSign() + this.positivePrefix)) {
- break;
- }
-
- var2.append(var1 ? this.symbols.getPatternSeparator() : ';');
- } else {
- var2.append(this.negativeSuffix);
- }
- }
-
- return var2.toString();
- }
-
- public void applyPattern(String var1) {
- this.applyPattern(var1, false);
- }
-
- public void applyLocalizedPattern(String var1) {
- this.applyPattern(var1, true);
- }
-
- private void applyPattern(String var1, boolean var2) {
- char var3 = '0';
- char var4 = ',';
- char var5 = '.';
- char var6 = '%';
- char var7 = 8240;
- char var8 = '#';
- char var9 = ';';
- char var10 = 'E';
- if (var2) {
- var3 = this.symbols.getZeroDigit();
- var4 = this.symbols.getGroupingSeparator();
- var5 = this.symbols.getDecimalSeparator();
- var6 = this.symbols.getPercent();
- var7 = this.symbols.getPerMill();
- var8 = this.symbols.getDigit();
- var9 = this.symbols.getPatternSeparator();
- var10 = this.symbols.getExponentialSymbol();
- }
-
- boolean var11 = false;
- this.decimalSeparatorAlwaysShown = false;
- this.isCurrencyFormat = false;
- this.useExponentialNotation = false;
- boolean var12 = false;
- int var13 = 0;
- int var14 = 0;
- int var15 = 1;
-
- while(true) {
- if (var15 >= 0 && var14 < var1.length()) {
- boolean var16 = false;
- StringBuffer var17 = new StringBuffer();
- StringBuffer var18 = new StringBuffer();
- int var19 = -1;
- short var20 = 1;
- int var21 = 0;
- int var22 = 0;
- int var23 = 0;
- byte var24 = -1;
- byte var25 = 0;
- StringBuffer var26 = var17;
-
- for(int var27 = var14; var27 < var1.length(); ++var27) {
- char var28 = var1.charAt(var27);
- switch (var25) {
- case 0:
- case 2:
- if (var16) {
- if (var28 == '\'') {
- if (var27 + 1 < var1.length() && var1.charAt(var27 + 1) == '\'') {
- ++var27;
- var26.append(var28);
- } else {
- var16 = false;
- }
- break;
- }
- } else {
- if (var28 == var8 || var28 == var3 || var28 == var4 || var28 == var5) {
- if (var25 == 2 && var26.length() > 0) {
- throw new IllegalArgumentException("Unquoted special character '" + var28 + "' in pattern \"" + var1 + '"');
- }
-
- var25 = 1;
- if (var15 == 1) {
- ;
- }
-
- --var27;
- break;
- }
-
- if (var28 == 164) {
- boolean var29 = var27 + 1 < var1.length() && var1.charAt(var27 + 1) == 164;
- var26.append(var29 ? this.symbols.getInternationalCurrencySymbol() : this.symbols.getCurrencySymbol());
- if (var29) {
- ++var27;
- }
-
- this.isCurrencyFormat = true;
- break;
- }
-
- if (var28 == '\'') {
- if (var28 == '\'') {
- if (var27 + 1 < var1.length() && var1.charAt(var27 + 1) == '\'') {
- ++var27;
- var26.append(var28);
- } else {
- var16 = true;
- }
- break;
- }
- } else {
- if (var28 == var9) {
- if (var25 == 0 || var15 == 0) {
- throw new IllegalArgumentException("Unquoted special character '" + var28 + "' in pattern \"" + var1 + '"');
- }
-
- var14 = var27 + 1;
- var27 = var1.length();
- break;
- }
-
- if (var28 == var6) {
- if (var20 != 1) {
- throw new IllegalArgumentException("Too many percent/permille characters in pattern \"" + var1 + '"');
- }
-
- var20 = 100;
- var28 = this.symbols.getPercent();
- } else if (var28 == var7) {
- if (var20 != 1) {
- throw new IllegalArgumentException("Too many percent/permille characters in pattern \"" + var1 + '"');
- }
-
- var20 = 1000;
- var28 = this.symbols.getPerMill();
- }
- }
- }
-
- var26.append(var28);
- break;
- case 1:
- if (var15 == 1) {
- ++var13;
- if (var28 == var8) {
- if (var22 > 0) {
- ++var23;
- } else {
- ++var21;
- }
-
- if (var24 >= 0 && var19 < 0) {
- ++var24;
- }
- } else if (var28 == var3) {
- if (var23 > 0) {
- throw new IllegalArgumentException("Unexpected '0' in pattern \"" + var1 + '"');
- }
-
- ++var22;
- if (var24 >= 0 && var19 < 0) {
- ++var24;
- }
- } else if (var28 == var4) {
- var24 = 0;
- } else if (var28 == var5) {
- if (var19 >= 0) {
- throw new IllegalArgumentException("Multiple decimal separators in pattern \"" + var1 + '"');
- }
-
- var19 = var21 + var22 + var23;
- } else {
- var25 = 2;
- var26 = var18;
- --var27;
- --var13;
- }
- } else {
- --var13;
- if (var13 == 0) {
- var25 = 2;
- var26 = var18;
- }
- }
- }
- }
-
- if (var22 == 0 && var21 > 0) {
- if (var19 >= 0) {
- int var31 = var19;
- if (var19 == 0) {
- var31 = var19 + 1;
- }
-
- var23 = var21 - var31;
- var21 = var31 - 1;
- } else {
- --var21;
- }
-
- var22 = 1;
- }
-
- if ((var19 >= 0 || var23 <= 0) && (var19 < 0 || var19 >= var21 && var19 <= var21 + var22) && var24 != 0 && !var16) {
- if (var15 == 1) {
- this.positivePrefix = var17.toString();
- this.positiveSuffix = var18.toString();
- this.negativePrefix = this.positivePrefix;
- this.negativeSuffix = this.positiveSuffix;
- int var32 = var21 + var22 + var23;
- ((NumberFormat)this).setMinimumIntegerDigits(var19 >= 0 ? var19 - var21 : 0);
- if (var22 > 1 && var21 == 0 && var23 == 0) {
- ((NumberFormat)this).setMinimumIntegerDigits(var22);
- } else if (var22 > 0 && var21 > 0 && var22 != var21 && var32 == var21 + var22) {
- ((NumberFormat)this).setMinimumIntegerDigits(var22);
- }
-
- ((NumberFormat)this).setMaximumIntegerDigits(this.useExponentialNotation ? var21 + ((NumberFormat)this).getMinimumIntegerDigits() : 127);
- ((NumberFormat)this).setMaximumFractionDigits(var19 >= 0 ? var32 - var19 : 0);
- ((NumberFormat)this).setMinimumFractionDigits(var19 >= 0 ? var21 + var22 - var19 : 0);
- ((NumberFormat)this).setGroupingUsed(var24 > 0);
- this.groupingSize = var24 > 0 ? var24 : 0;
- this.multiplier = var20;
- this.setDecimalSeparatorAlwaysShown(var19 == 0 || var19 == var32);
- } else {
- this.negativePrefix = var17.toString();
- this.negativeSuffix = var18.toString();
- var11 = true;
- }
-
- --var15;
- continue;
- }
-
- throw new IllegalArgumentException("Malformed pattern \"" + var1 + '"');
- }
-
- if (!var11 || this.negativePrefix.equals(this.positivePrefix) && this.negativeSuffix.equals(this.positiveSuffix)) {
- this.negativeSuffix = this.positiveSuffix;
- this.negativePrefix = this.symbols.getMinusSign() + this.negativePrefix;
- }
-
- return;
- }
- }
-
- private void readObject(ObjectInputStream var1) throws IOException, ClassNotFoundException {
- var1.defaultReadObject();
- this.digitList = new DigitList();
- }
- }
-