Java provides multiple approaches to format decimal places:
graph TD
A[Decimal Formatting] --> B[DecimalFormat]
A --> C[String.format()]
A --> D[BigDecimal Methods]
import java.text.DecimalFormat;
public class DecimalFormatExample {
public static void main(String[] args) {
DecimalFormat df = new DecimalFormat("#.##");
double number = 123.4567;
System.out.println(df.format(number)); // Outputs: 123.46
}
}
public class StringFormatExample {
public static void main(String[] args) {
// Limit to 2 decimal places
System.out.printf("%.2f", 123.4567); // Outputs: 123.46
// Pad with zeros
System.out.printf("%05.2f", 123.4); // Outputs: 123.40
}
}
3. BigDecimal Rounding
Rounding Mode |
Description |
ROUND_HALF_UP |
Rounds to nearest neighbor |
ROUND_DOWN |
Truncates decimal places |
ROUND_CEILING |
Always rounds up |
Rounding Example
import java.math.BigDecimal;
import java.math.RoundingMode;
public class BigDecimalRounding {
public static void main(String[] args) {
BigDecimal value = new BigDecimal("123.4567");
BigDecimal rounded = value.setScale(2, RoundingMode.HALF_UP);
System.out.println(rounded); // Outputs: 123.46
}
}
import java.text.NumberFormat;
import java.util.Locale;
public class CurrencyFormat {
public static void main(String[] args) {
NumberFormat currencyFormat = NumberFormat.getCurrencyInstance(Locale.US);
double amount = 1234.56;
System.out.println(currencyFormat.format(amount)); // $1,234.56
}
}
Best Practices
- Choose the right formatting method based on your use case
- Consider performance implications
- Be consistent with rounding strategies
At LabEx, we emphasize understanding these techniques for precise decimal handling in Java applications.