Is String.format %d always compatible with BigInteger?

Lecky. not lackey picture Lecky. not lackey · Aug 14, 2014 · Viewed 6.9k times · Source

With String.format %d and its variants, we can easily format primitive integers and longs. However, does these formatting options work perfectly with BigInteger?

I've made some tests, and they seem to work well, for example:

public class Test6 {
    public static void main(final String args[]) {
        final java.math.BigInteger b = java.math.BigInteger.TEN.pow(999999);
        System.out.println(String.format("%,d", b));
    }
}

But are there any gotchas to watch out for?

Answer

Thilo picture Thilo · Aug 14, 2014

There is an extensive section in the documentation for format strings.

I suppose the only tricky part could be locale-sensitivity (like what decimal point to use), but that applies for the other numeric types, too.

The following conversions may be applied to BigInteger.

'd'

Requires the output to be formatted as a decimal integer. The localization algorithm is applied.

If the '#' flag is given FormatFlagsConversionMismatchException will be thrown.