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%.
- How do I get number of each day for a certain month in Java? - September 8, 2024
- How do I get operating system process information using ProcessHandle? - July 22, 2024
- How do I sum a BigDecimal property of a list of objects using Java Stream API? - July 22, 2024