HOWTO · Java
Formato de moeda em Java
Este artigo apresenta o 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Á.