Formato de moeda em Java

Rashmi Patidar 12 outubro 2023
  1. Converta a moeda usando funções lógicas em Java
  2. Converter moeda usando a classe NumberFormat em Java
Formato de moeda em Java

Abaixo estão algumas maneiras pelas quais podemos converter uma moeda para os valores desejados em Java.

Converta a moeda usando funções lógicas em Java

public class CurrencyConversion {
  public static void main(String[] args) {
    double currency_value = 10.9897;
    float epsilon = 0.004f;
    if (Math.abs(Math.round(currency_value) - currency_value) < epsilon) {
      System.out.printf("%10.0f", currency_value);
    } else {
      System.out.printf("%10.2f", currency_value);
    }
  }
}

No código CurrencyConversion acima, há uma variável currency_value, que mantém os valores monetários em formato decimal. O epsilon é outra variável que contém um valor diferente. O valor pode ser qualquer número flutuante que execute algumas operações lógicas sobre sua diferença. A lógica da instrução if é definida para obter o valor absoluto da diferença entre o número arredondado e o real. O valor absoluto é comparado com o valor épsilon. O programa usa a função Math.abs() que converte a diferença real do valor decimal para zero ou maior que zero.

Com base na saída da instrução condicional, ela é impressa no formato como 10.0f ou 10.2f. O especificador de dois formatos fornecido diz, uma parte integrante como 10, o que significa que a string inteira contém dez caracteres. E a parte fracionária especifica o formato até 2 casas decimais.

No log do console abaixo, ele imprime um valor convertido absoluto com até 2 casas decimais.

10.99  //10.9897
10	   //10
10	   //10.0008

No primeiro caso, quando o valor da moeda é 10.9897, é arredondado para 10.99. Além disso, quando o valor da moeda é alterado para 10, a saída ainda retorna 10, pois nada é arredondado na moeda de entrada. E quando o valor da moeda é alterado para 10.0008, o valor é arredondado para o valor 10.

Converter moeda usando a classe NumberFormat em Java

import java.text.NumberFormat;

public class CurrencyConversion {
  public static void main(String[] args) {
    double money = 100.1;
    NumberFormat formatter = NumberFormat.getCurrencyInstance();
    String moneyString = formatter.format(money);
    System.out.println(moneyString);
  }
}

O bloco de código acima usa a classe NumberFormat que chama um método estático da função getCurrencyInstance. O método retorna o formato da moeda do formato na localidade padrão. Também é necessário um valor de localidade para especificar uma região. E as instâncias de moeda podem estar no formato Rupees Dollar com base na área ou região definida. Agora, a instância do formatador é usada para chamar um método de formatação. O método format recebe um parâmetro duplo money e retorna um valor String. A função pode lançar ArithmeticException quando o arredondamento ocorre incorretamente.

O código acima cria a seguinte saída.

Rs.100.10

Mas pode ser diferente quando o valor do local é diferente. A saída pode ser quando o valor local é Locale.CHINA. Ou retorna $ quando o Locale é Locale.CANADÁ.

Rashmi Patidar avatar Rashmi Patidar avatar

Rashmi is a professional Software Developer with hands on over varied tech stack. She has been working on Java, Springboot, Microservices, Typescript, MySQL, Graphql and more. She loves to spread knowledge via her writings. She is keen taking up new things and adopt in her career.

LinkedIn

Artigo relacionado - Java String