0Pricing
Java Academy · Aula

Arredondamento e Escala

Controle a precisão e os modos de arredondamento

Arredondamento e Escala é uma aula grátis de Java Academy no CoddyKit. Esta é a aula 3 de 4. Você pode ler a aula completa abaixo gratuitamente — depois pratica ao vivo no navegador com um editor de código integrado e um tutor de IA 24/7. Faz parte do caminho de aprendizado de Java Academy, e seu progresso é sincronizado entre a web e o app CoddyKit. O curso de Java Academy inclui 4 aulas no total.

Escala e precisão

Cada BigDecimal tem uma escala, que corresponde ao número de algarismos à direita da vírgula decimal. O valor 12.340 tem escala 3. Controlar a escala permite apresentar valores monetários com exatamente duas casas decimais.

Inspecionando a escala

Chame scale() para ver quantas casas decimais um valor contém e precision() para ver o número total de algarismos significativos.

import java.math.BigDecimal;

public class Main {
    public static void main(String[] args) {
        BigDecimal v = new BigDecimal("12.340");
        System.out.println(v.scale());
        System.out.println(v.precision());
    }
}

setScale para corrigir casas decimais

setScale força um valor a ter uma quantidade escolhida de casas decimais. Você deve passar um RoundingMode se for necessário arredondar.

import java.math.BigDecimal;
import java.math.RoundingMode;

public class Main {
    public static void main(String[] args) {
        BigDecimal v = new BigDecimal("12.3456");
        System.out.println(v.setScale(2, RoundingMode.HALF_UP));
    }
}

Arredondamento de metade para cima, o modo comum

RoundingMode.HALF_UP arredonda para o número mais próximo, e os casos de empate são arredondados para longe de zero. Esse é o arredondamento do dia a dia que as pessoas aprendem na escola.

import java.math.BigDecimal;
import java.math.RoundingMode;

public class Main {
    public static void main(String[] args) {
        System.out.println(new BigDecimal("2.5").setScale(0, RoundingMode.HALF_UP));
        System.out.println(new BigDecimal("3.5").setScale(0, RoundingMode.HALF_UP));
    }
}

Arredondamento de metade para o par, o arredondamento bancário

HALF_EVEN arredonda os casos de empate em direção ao algarismo par mais próximo. Isso reduz o viés ao longo de muitos arredondamentos, razão pela qual os bancos preferem esse modo.

import java.math.BigDecimal;
import java.math.RoundingMode;

public class Main {
    public static void main(String[] args) {
        System.out.println(new BigDecimal("2.5").setScale(0, RoundingMode.HALF_EVEN));
        System.out.println(new BigDecimal("3.5").setScale(0, RoundingMode.HALF_EVEN));
    }
}

CEILING e FLOOR

CEILING sempre arredonda em direção ao infinito positivo, enquanto FLOOR sempre arredonda em direção ao infinito negativo, independentemente do algarismo descartado.

import java.math.BigDecimal;
import java.math.RoundingMode;

public class Main {
    public static void main(String[] args) {
        BigDecimal v = new BigDecimal("2.1");
        System.out.println(v.setScale(0, RoundingMode.CEILING));
        System.out.println(v.setScale(0, RoundingMode.FLOOR));
    }
}

DOWN e UP

DOWN trunca em direção a zero, enquanto UP sempre arredonda para longe de zero. DOWN é um truncamento simples.

import java.math.BigDecimal;
import java.math.RoundingMode;

public class Main {
    public static void main(String[] args) {
        BigDecimal v = new BigDecimal("2.9");
        System.out.println(v.setScale(0, RoundingMode.DOWN));
        System.out.println(v.setScale(0, RoundingMode.UP));
    }
}

Arredondamento durante a divisão

Uma divisão pode produzir casas decimais infinitas, portanto você fornece a escala e o modo de arredondamento diretamente na chamada a divide.

import java.math.BigDecimal;
import java.math.RoundingMode;

public class Main {
    public static void main(String[] args) {
        BigDecimal bill = new BigDecimal("100.00");
        BigDecimal people = new BigDecimal("3");
        System.out.println(bill.divide(people, 2, RoundingMode.HALF_UP));
    }
}

Removendo zeros à direita

stripTrailingZeros remove zeros extras. Combine-o com toPlainString para evitar a notação científica na saída.

import java.math.BigDecimal;

public class Main {
    public static void main(String[] args) {
        BigDecimal v = new BigDecimal("12.300");
        System.out.println(v.stripTrailingZeros().toPlainString());
    }
}

Formatando dinheiro

Para exibição, defina a escala como 2 com HALF_UP, para que os preços sempre mostrem duas casas decimais, mesmo quando forem valores inteiros.

import java.math.BigDecimal;
import java.math.RoundingMode;

public class Main {
    public static void main(String[] args) {
        BigDecimal amount = new BigDecimal("7");
        System.out.println(amount.setScale(2, RoundingMode.HALF_UP));
    }
}

Escolhendo um modo

Escolha HALF_UP para o arredondamento comum voltado ao usuário e HALF_EVEN na contabilidade, para reduzir o viés acumulado. Sempre especifique um modo para que seu código nunca lance uma exceção em resultados não terminantes.

Verificação rápida

Teste seus conhecimentos sobre escala e arredondamento.

Recapitulação

Você aprendeu a controlar a precisão:

  • Escala é o número de algarismos depois da vírgula decimal
  • setScale corrige as casas decimais e exige um RoundingMode
  • HALF_UP é o arredondamento comum, e HALF_EVEN é o arredondamento bancário
  • CEILING, FLOOR, UP e DOWN abrangem os arredondamentos direcionais
  • Sempre especifique um modo para divisões, a fim de evitar exceções

Perguntas Frequentes

A aula “Arredondamento e Escala” é grátis?

Sim — o texto completo de “Arredondamento e Escala” é grátis para ler aqui na web. Para praticá-la interativamente (um editor de código integrado e um tutor de IA 24/7) e desbloquear o restante do curso de Java Academy, atualize para CoddyKit PRO. O curso de Java Academy inclui 4 aulas no total.

O que vou aprender em “Arredondamento e Escala”?

Controle a precisão e os modos de arredondamento Você pratica Java Academy com código prático que executa diretamente no navegador, e um tutor de IA 24/7 responde suas dúvidas enquanto trabalha na aula.

Preciso ter experiência prévia para começar Java Academy?

Nenhuma experiência prévia é necessária. Java Academy no CoddyKit é estruturado para alunos iniciantes até avançados, então você pode começar aqui ou desde o início e aprender no seu ritmo. Esta é a aula 3 de 4.

Quanto tempo leva a aula “Arredondamento e Escala”?

A maioria das aulas CoddyKit leva cerca de 5–10 minutos. Cada uma é compacta e interativa, então você faz progresso constante e retoma exatamente de onde parou entre web e app.

Posso escrever e executar código nesta aula de Java Academy?

Sim. Cada aula de Java Academy inclui um editor de código integrado, então você escreve e executa código real direto no navegador e recebe feedback de IA instantaneamente — nenhuma configuração local necessária.

Todas as aulas deste curso

  1. Por que não usar double para Dinheiro
  2. Trabalhando com BigDecimal
  3. Arredondamento e Escala
  4. BigInteger para Números Enormes
← Voltar para Java Academy