Java:
Arredondamento de números
Como fazer:
Java oferece várias maneiras de arredondar números. Aqui está uma demonstração rápida com Math.round()
, BigDecimal
e DecimalFormat
.
public class RoundingDemo {
public static void main(String[] args) {
double num = 123.4567;
// Usando Math.round()
long roundedNum = Math.round(num);
System.out.println(roundedNum); // Saída: 123
// Usando BigDecimal para mais controle
BigDecimal bd = new BigDecimal(num).setScale(2, RoundingMode.HALF_UP);
double roundedBigDecimal = bd.doubleValue();
System.out.println(roundedBigDecimal); // Saída: 123.46
// Usando DecimalFormat
DecimalFormat df = new DecimalFormat("#.##");
String formattedNum = df.format(num);
System.out.println(formattedNum); // Saída: 123.46
}
}
Aprofundamento
Historicamente, arredondar números tem sido essencial para cálculos analógicos e foi transferido para a computação digital por eficiência e precisão. Erros de arredondamento, como aqueles da aritmética de ponto flutuante, demonstram que isso não é uma questão trivial — eles podem acumular e bagunçar cálculos, digamos, em aplicações aeroespaciais e financeiras.
Além de Math.round()
, você tem o BigDecimal
, que lhe dá um controle mais fino sobre a escala e o modo de arredondamento, e DecimalFormat
para quando você precisa arredondar números como parte da formatação da saída de texto. Alternativas ao arredondamento incluem operações de piso, teto e truncamento, que são diferentes maneiras de lidar com precisão e são normalmente tratadas por vários métodos Math
.
Dependendo do seu caso de uso, a estratégia de arredondamento pode variar. Por exemplo, BigDecimal
é a escolha para cálculos financeiros, onde a precisão é crítica. Em contraste, Math.round()
é uma maneira rápida para operações de propósito geral quando você é menos exigente sobre o modo de arredondamento.