Java Code Examples for com.ibm.icu.text.NumberFormat#setMaximumFractionDigits()

The following examples show how to use com.ibm.icu.text.NumberFormat#setMaximumFractionDigits() . You can vote up the ones you like or vote down the ones you don't like, and go to the original project or source file by following the links above each example. You may check out the related API usage on the sidebar.
Example 1
Source File: NumberFormatService.java    From singleton with Eclipse Public License 2.0 5 votes vote down vote up
/**
 * Format a number to localized number by scale
 * @param locale
 * @param number
 * @param scale
 * @return Localized number
 */
public String formatNumber(String locale, String number, int scale) {
    Number num = this.parseNumber(number);
	ULocale uLocale = new ULocale(locale);
	NumberFormat numberFormat = NumberFormat.getNumberInstance(uLocale);
	numberFormat.setMaximumFractionDigits(scale);
	numberFormat.setMinimumFractionDigits(scale);
	numberFormat.setRoundingMode(BigDecimal.ROUND_HALF_UP);
	return numberFormat.format(num);
}
 
Example 2
Source File: ChartUIUtil.java    From birt with Eclipse Public License 1.0 5 votes vote down vote up
/**
 * Returns the default number format instance for default locale.
 * 
 * @return the default number format
 */
public static NumberFormat getDefaultNumberFormatInstance( )
{
	NumberFormat numberFormat = NumberFormat.getInstance( );
	// fix icu limitation which only allow 3 fraction digits as maximum by
	// default. ?100 is enough.
	numberFormat.setMaximumFractionDigits( 100 );
	return numberFormat;
}
 
Example 3
Source File: FormatterImpl.java    From org.openntf.domino with Apache License 2.0 4 votes vote down vote up
public String formatNumber(final Number n, final LotusNumberOptions lno) {
	NumberFormat nf;
	/*
	 * It would have been more convenient to use NumberFormat.getInstance(locale, style),
	 * but this method is private in com.ibm.icu_3.8.1.v20120530.jar.
	 * (Seems to be public as of ICU 4.2.)
	 */
	if (lno.format == 'C')
		nf = NumberFormat.getCurrencyInstance(iLocale);
	else if (lno.format == 'S')
		nf = NumberFormat.getScientificInstance(iLocale);
	else if (lno.format == '%')
		nf = NumberFormat.getPercentInstance(iLocale);
	else
		nf = NumberFormat.getNumberInstance(iLocale);
	nf.setGroupingUsed(lno.useGrouping);
	nf.setMaximumIntegerDigits(1000);
	if (lno.fractionDigits != -1) {
		nf.setMinimumFractionDigits(lno.fractionDigits);
		nf.setMaximumFractionDigits(lno.fractionDigits);
	} else
		nf.setMaximumFractionDigits(1000);
	String ret = nf.format(n);
	do {
		if (lno.format != 'G' || ret.length() <= 15)
			break;
		/*
		 * In this case, Lotus implicitly switches to scientific style.
		 * When useGrouping is in effect, the limit decreases from 15 to 12 in Lotus
		 * (i.e. the grouping bytes are likewise counted), but we are not going to
		 *  imitate this strange behaviour.
		 */
		String tester = ret;
		if (lno.useGrouping) {
			nf.setGroupingUsed(false);
			tester = nf.format(n);
		}
		int minus = (tester.charAt(0) == '-') ? 1 : 0;
		int lh = tester.length();
		if (lh - minus <= 15)
			break;
		int komma = minus;
		for (; komma < lh; komma++)
			if (!Character.isDigit(tester.charAt(komma)))
				break;
		if (komma - minus <= 15)
			break;
		nf = NumberFormat.getScientificInstance(iLocale);
		nf.setGroupingUsed(lno.useGrouping);
		ret = nf.format(n);
	} while (false);
	if (lno.negativeAsParentheses && ret.charAt(0) == '-')
		ret = '(' + ret.substring(1) + ')';
	return ret;
}