Introdução
Arredondar um número significa obter um valor aproximado dele. Em Java, existem várias maneiras de arredondar um número de ponto flutuante. Neste laboratório, aprenderemos como arredondar números usando diferentes métodos em Java.
Arredondamento Usando o Método printf()
Podemos usar o método System.out.printf() para imprimir o número arredondado no console. Podemos especificar o número de casas decimais que queremos arredondar usando modificadores de precisão.
public static void main(String args[]) {
double pi = 3.14159265359;
double oneThird = 1.0/3.0;
float g = 9.807f;
System.out.printf("Pi: %.2f %n", pi); // prints Pi: 3.14
System.out.printf("One Third: %.3f %n", oneThird); // prints One Third: 0.333
System.out.printf("Gravitation Acceleration(g): %.0f", g); // prints Gravitation Acceleration(g): 10
}
Para executar o código, abra o terminal e vá para o diretório onde o arquivo de código está localizado. Em seguida, compile o código usando javac filename.java. Depois disso, execute-o usando java filename.
Arredondamento Usando o Método DecimalFormat()
Podemos usar a classe DecimalFormat para especificar um padrão no qual queremos formatar o número. Podemos usar hashtags (#) para especificar o número de casas decimais e, em seguida, podemos usar o método format() para arredondar os dígitos.
public static void main(String args[]) {
double pi = 3.14159265359;
double oneThird = 1.0/3.0;
float g = 9.807f;
DecimalFormat d1 = new DecimalFormat("#.##");
DecimalFormat d2 = new DecimalFormat("#.###");
DecimalFormat d3 = new DecimalFormat("#");
System.out.println("Pi: " + d1.format(pi)); // prints Pi: 3.14
System.out.println("One Third: " + d2.format(oneThird)); // prints One Third: 0.333
System.out.println("Gravitation Acceleration(g):" + d3.format(g)); // prints Gravitation Acceleration(g): 10
}
Para executar o código, abra o terminal e vá para o diretório onde o arquivo de código está localizado. Em seguida, compile o código usando javac filename.java. Depois disso, execute-o usando java filename.
Arredondamento Usando o Método Math.round()
Podemos usar Math.round() para arredondar números decimais. Ele pode ser usado quando queremos arredondar um número para zero casas decimais.
public static void main(String args[]) {
double pi = 3.14159265359;
double oneThird = 1.0/3.0;
float g = 9.807f;
System.out.println("Pi: " + Math.round(pi)); // prints Pi: 3
System.out.println("One Third: " + Math.round(oneThird)); // prints One Third: 0
System.out.println("Gravitation Acceleration(g):" + Math.round(g)); // prints Gravitation Acceleration(g): 10
}
Para executar o código, abra o terminal e vá para o diretório onde o arquivo de código está localizado. Em seguida, compile o código usando javac filename.java. Depois disso, execute-o usando java filename.
Criar um Método de Arredondamento Personalizado
Podemos criar nosso próprio método para arredondar um número decimal se quisermos arredondar para mais de zero casas decimais. O método a seguir recebe um valor decimal e o número de casas decimais para arredondar como parâmetros e retorna o número arredondado.
public static double round(double num, int places) {
double scale = Math.pow(10, places);
double roundedNum = Math.round(num * scale) / scale;
return roundedNum;
}
public static void main(String args[]) {
double pi = 3.14159265359;
double oneThird = 1.0/3.0;
float g = 9.807f;
System.out.println("Pi: " + round(pi, 2)); // prints Pi: 3.14
System.out.println("One Third: " + round(oneThird, 3)); // prints One Third: 0.333
System.out.println("Gravitation Acceleration(g):" + round(g, 0)); // prints Gravitation Acceleration(g): 10.0
}
Para executar o código, abra o terminal e vá para o diretório onde o arquivo de código está localizado. Em seguida, compile o código usando javac filename.java. Depois disso, execute-o usando java filename.
Arredondamento Usando BigDecimal
Podemos usar o método round() da classe BigDecimal para arredondar um número. O código a seguir demonstra como arredondar um número decimal usando o método round() da classe BigDecimal.
public static void main(String args[]) {
BigDecimal pi = new BigDecimal("3.14159265359");
pi = pi.setScale(4, RoundingMode.HALF_UP); // Rounds to 4 decimal places
System.out.println("Pi: " + pi); // prints Pi: 3.1416
}
Para executar o código, abra o terminal e vá para o diretório onde o arquivo de código está localizado. Em seguida, compile o código usando javac filename.java. Depois disso, execute-o usando java filename.
Arredondar Qualquer Número Não-BigDecimal Usando BigDecimal
Se o número não for do tipo BigDecimal, podemos primeiro convertê-lo e, em seguida, arredondá-lo usando a classe BigDecimal. O método a seguir pode ser usado para arredondar números de tipos de dados double.
public static double round(double num, int places) {
BigDecimal b = new BigDecimal(Double.toString(num));
b = b.setScale(places, RoundingMode.HALF_UP);
return b.doubleValue();
}
public static void main(String args[]) {
double pi = 3.14159265359;
double oneThird = 1.0/3.0;
double g = 9.807f;
pi = round(pi, 4);
oneThird = round(oneThird, 3);
g = round(g, 0);
System.out.println("Pi: " +pi); // prints Pi: 3.1416
System.out.println("One Third: " + oneThird); // prints One Third: 0.333
System.out.println("Gravitation Acceleration(g):" + g); // prints Gravitation Acceleration(g): 10.0
}
Para executar o código, abra o terminal e vá para o diretório onde o arquivo de código está localizado. Em seguida, compile o código usando javac filename.java. Depois disso, execute-o usando java filename.
Resumo
Neste laboratório, aprendemos diferentes métodos para arredondar números decimais em Java. Usamos printf() e DecimalFormat() para arredondamento mais simples, Math.round() para arredondamento para zero casas decimais, BigDecimal para arredondamento preciso e DoubleRounder para arredondamento usando a biblioteca decimal4j. Também criamos um método personalizado para arredondar qualquer número decimal para qualquer número de casas decimais.



