-
Notifications
You must be signed in to change notification settings - Fork 340
Numeros por extenso core
Lazaro Jr edited this page Oct 24, 2016
·
6 revisions
Veja abaixo como utilizar a rotina de extenso do Caelum Stella.
NumericToWordsConverter converter;
converter = new NumericToWordsConverter(new FormatoDeInteiro());
double numero = 1000150.99;
String extenso = converter.toWords(numero);
System.out.println(extenso);
// um milhão e cento e cinquenta inteiros e novecentos e noventa milésimos
Se você preferir, pode imprimir o número sem a unidade, basta alterar o conversor utilizado:
NumericToWordsConverter converter;
converter = new NumericToWordsConverter(new InteiroSemFormato());
double numero = 1000150.99;
String extenso = converter.toWords(numero);
System.out.println(extenso);
// um milhão e cento e cinquenta e um
Utilizando o stella apra imprimir valores monetários
NumericToWordsConverter converter;
converter = new NumericToWordsConverter(new FormatoDeReal());
double numero = 1000150.99;
String extenso = converter.toWords(numero);
System.out.println(extenso);
// um milhão e cento e cinquenta reais e noventa e nove centavos
Primeiramente criamos um formato próprio implementando a interface FormatoDeExtenso
. Vamos criar um formato para imprimir tempo em segundos:
public class FormatoDeSegundosComMilesimos implements FormatoDeExtenso {
public int getCasasDecimais() {
return 3;
}
public String getUnidadeDecimalNoPlural() {
return "milésimos de segundo";
}
public String getUnidadeDecimalNoSingular() {
return "milésimo de segundo";
}
public String getUnidadeInteiraNoPlural() {
return "segundos";
}
public String getUnidadeInteiraNoSingular() {
return "segundo";
}
}
Agora vamos utilizar este formato para extrair números por extenso.
public class ExemploDeExtenso {
public static void main(String[] args) {
FormatoDeExtenso formato = new FormatoDeSegundosComMilesimos();
NumericToWordsConverter converter = new NumericToWordsConverter(formato);
String tempo = converter.toWords(0.05);
String message = "Cibernautas demoram " + tempo + " a avaliar uma página.";
System.out.println(message);
tempo = converter.toWords(9.52);
message = "Técnico diz que Bolt poderia ter feito 100m em " + tempo + ".";
System.out.println(message);
}
}
A saída no console será a seguinte:
Cibernautas demoram cinquenta milésimos de segundo a avaliar uma página.
Técnico diz que Bolt poderia ter feito 100m em nove segundos e quinhentos e vinte milésimos de segundo.