/** * Returns the default rule for infinity. This object is lazily created: this function * creates it the first time it's called. */ NFRule getDefaultInfinityRule() { if (defaultInfinityRule == null) { defaultInfinityRule = new NFRule(this, "Inf: " + getDecimalFormatSymbols().getInfinity()); } return defaultInfinityRule; }
/** * Returns the default rule for NaN. This object is lazily created: this function * creates it the first time it's called. */ NFRule getDefaultNaNRule() { if (defaultNaNRule == null) { defaultNaNRule = new NFRule(this, "NaN: " + getDecimalFormatSymbols().getNaN()); } return defaultNaNRule; }
DecimalFormat getDecimalFormat() { if (decimalFormat == null) { // Don't use NumberFormat.getInstance, which can cause a recursive call String pattern = getPattern(locale, NUMBERSTYLE); decimalFormat = new DecimalFormat(pattern, getDecimalFormatSymbols()); } return decimalFormat; }
/** * Determine the best fraction rule to use. Rules matching the decimal point from * DecimalFormatSymbols become the main set of rules to use. * @param originalIndex The index into nonNumericalRules * @param newRule The new rule to consider * @param rememberRule Should the new rule be added to fractionRules. */ private void setBestFractionRule(int originalIndex, NFRule newRule, boolean rememberRule) { if (rememberRule) { if (fractionRules == null) { fractionRules = new LinkedList<NFRule>(); } fractionRules.add(newRule); } NFRule bestResult = nonNumericalRules[originalIndex]; if (bestResult == null) { nonNumericalRules[originalIndex] = newRule; } else { // We have more than one. Which one is better? DecimalFormatSymbols decimalFormatSymbols = owner.getDecimalFormatSymbols(); if (decimalFormatSymbols.getDecimalSeparator() == newRule.getDecimalPoint()) { nonNumericalRules[originalIndex] = newRule; } // else leave it alone } }