## How do I format a number as percentage with fraction digits?

In Java, the `NumberFormat` class of `java.text` package can be used to format numbers. For formatting a number as a percentage string with fraction digits, you can use the `getPercentInstance()` method that returns a percentage format for the current default `Locale`.

Here is a sample code snippet showing how to format a number as a percentage string with two digits of fractions:

``````package org.kodejava.text;

import java.text.NumberFormat;

public class FormatPercentage {
public static void main(String[] args) {
double number = 0.12345;

// Get an instance of NumberFormat for percentage
NumberFormat percentFormat = NumberFormat.getPercentInstance();

// Set the fraction digits - change this value to control the
// number of fraction digits.
percentFormat.setMinimumFractionDigits(2); // set the minimum
percentFormat.setMaximumFractionDigits(4); // set the maximum

// Format the number as a percentage
String formattedPercent = percentFormat.format(number);

System.out.println("Number as percentage: " + formattedPercent);
}
}
``````

Output:

``````Number as percentage: 12.345%
``````

In the above example, `0.12345` will be formatted as `12.35%` because we have set the `MinimumFractionDigits` to `2` which means up to two decimal points will be included in the formatted percentage. If we also set the `MaximumFractionDigits` it will allow us to have up to four decimal points in the output value, here we have `12.345%`.

Note that the actual percentage is calculated by multiplying the number by `100`, so `0.12345` becomes `12.345%` and then rounded to `12.35%` (because of the fraction digits setting, in this case we only set the minimum fraction digits to two decimal points).

We can also use the `DecimalFormat` class. The `DecimalFormat` class in Java is used to format decimal numbers. It is a subclass of `NumberFormat` and you can customize the format of your number using it.

Here’s a simple example of how you can format a number as a percentage string using `DecimalFormat`:

``````package org.kodejava.text;

import java.text.DecimalFormat;

public class DecimalFormatPercentDemo {
public static void main(String[] args) {
double number = 0.123;

// Create a new DecimalFormat instance with a percentage pattern
DecimalFormat df = new DecimalFormat("#%");

// Set the number of fraction digits
df.setMinimumFractionDigits(2);

// Format the number into a percentage
String percentage = df.format(number);

System.out.println(percentage);
}
}
``````

This program will output 12.30%

The `"#%"` pattern means that the number should be formatted as a percentage. And `df.setMinimumFractionDigits(2)`; means that the decimal will be formatted to two places.

The `DecimalFormat` will automatically multiply our value by 100, which is why 0.123 appears as 12.30%.