Escrever valores por extenso  XML
Índice dos Fóruns » Java Básico
Autor Mensagem
#@®®¡$
Moderador
[Avatar]

Membro desde: 13/02/2004 09:42:28
Mensagens: 807
Localização: São Paulo
Offline

Pessoal, alguém tem algum código para escrever valores por extenso? Algo do tipo:

Entrada: 1598.35
Saída: Um mil, quinhentos e noventa e oito Reais, trinta e cinco centavos.

Estou criando um, mas imagino que exista uma maneira mais prática e inteligente do que usar vetores e sair analisando o número usando o MOD...

Agradeço de antemão.
[WWW] [ICQ]
Bani
JWizard
[Avatar]

Membro desde: 13/10/2002 23:17:37
Mensagens: 2448
Localização: São Paulo
Offline

Há muito tempo atrás alguém do GUJ tinha feito:
http://www.guj.com.br/forum/viewtopic.php?t=2556

~ Site da Bani ~
leandrobatisti
Smalltalk

Membro desde: 18/01/2008 16:53:47
Mensagens: 1
Offline



Eu criei uma função que usa vetores sem mod
//Passar uma string formatada em c com o String.Format
public string valorExtenso(string wvalor){
string[] wunidade ={""," e um"," e dois"," e trez"," e quatro"," e cinco"," e seis"," e sete"," e oito"," e nove"};
string[] wdezes = {""," e onze"," e doze"," e treze"," e quatorze"," e quinze"," e dezesseis"," e dezessete"," e dezoito"," e dezenove"};
string[] wdezenas = {""," e dez"," e vinte"," e trinta"," e quarenta"," e cinquenta"," e sessenta"," e setenta"," e oitenta"," e noventa"};
string[] wcentenas = {""," e cento"," e duzentos"," e trezentos"," e quatrocentos"," e quinhentos"," e seiscentos"," e setecentos"," e oitocentos"," e novecentos"};
string[] wplural = {" bilhões"," milhões"," mil",""};
string[] wsingular = {" bilhão"," milhão"," mil",""};
string wextenso = "";
string wfracao;
wvalor = wvalor.Replace("R$","");
string wnumero = wvalor.Replace(",","").Trim();
wnumero = wnumero.Replace(".","").PadLeft(14,'0');
if(Int64.Parse(wnumero.Substring(0,12)) > 0){
for(int i=0;i<4;i++){
wfracao = wnumero.Substring(i*3,3);
if(int.Parse(wfracao) != 0){
if(int.Parse(wfracao.Substring(0,3)) == 100) wextenso += " e cem";
else{
wextenso += wcentenas[int.Parse(wfracao.Substring(0,1))];
if(int.Parse(wfracao.Substring(1,2)) > 10 &&int.Parse(wfracao.Substring(1,2)) < 20)wextenso += wdezes[int.Parse(wfracao.Substring(2,1))];
else{
wextenso += wdezenas[int.Parse(wfracao.Substring(1,1))];
wextenso += wunidade[int.Parse(wfracao.Substring(2,1))];
}
}
if(int.Parse(wfracao) > 1)wextenso += wplural[i];
else wextenso += wsingular[i];
}
}
if(Int64.Parse(wnumero.Substring(0,12)) > 1) wextenso += " reais";
else wextenso += " real";
}
wfracao = wnumero.Substring(12,2);
if(int.Parse(wfracao) > 0){
if(int.Parse(wfracao.Substring(0,2)) > 10 &&int.Parse(wfracao.Substring(0,2)) < 20) wextenso = wextenso + wdezes[int.Parse(wfracao.Substring(1,1))];
else{
wextenso += wdezenas[int.Parse(wfracao.Substring(0,1))];
wextenso += wunidade[int.Parse(wfracao.Substring(1,1))];
}
if(int.Parse(wfracao) > 1) wextenso += " centavos";
else wextenso += " centavo";
}
if(wextenso != "") wextenso = wextenso.Substring(3,1).ToUpper() + wextenso.Substring(4);
else wextenso = "Nada";
return wextenso;
}

This message was edited 1 time. Last update was at 18/01/2008 16:57:04

Pedrosa
JWizard
[Avatar]

Membro desde: 13/07/2005 13:08:08
Mensagens: 2509
Localização: São Paulo - Brasil
Offline

Tenho esse exemplo:

 Nome do arquivo Extenso.java [Disk] Download
 Descrição
 Tamanho 12 Kbytes
 Baixado:  3519 vez(es)

jau
Entusiasta Java

Membro desde: 31/10/2003 10:59:20
Mensagens: 15
Localização: {Jaú, São Carlos} - SP
Offline


Só para deixar registrado, tem uma implementação disso em: http://github.com/jau/porextenso.

Exemplo de uso:



Resultado:

[]s
Jaú
[WWW] [ICQ]
renamed
GUJ Ranger

Membro desde: 21/09/2009 08:47:57
Mensagens: 912
Localização: Rio de Janeiro
Offline

Caraca, eu já fiz isso em VBA... pra escrever em espanhol huahuauhauh...

flw!
===========================
Bacharel em Sistemas de Informação pela PUC-Rio
Mestrando em Inteligência Artificial pelo PPGI-UFRJ
[MSN]
ricardo.narezi
JavaChild
[Avatar]

Membro desde: 19/12/2007 11:16:28
Mensagens: 116
Localização: Santo André
Offline

Galera,

Algúem teria uma classe que escreva os números por extenso mais em dolares?

obrigado

Obs.: O texto acima não é uma verdade soberana, não precisa cortar os pulsos caso não concorde.

Scala is the future.

Ricardo Narezi
Narezi & Lopes Consultoria em TI




[Email] [WWW] [Yahoo!] aim icon [MSN] [ICQ]
Priuli
JavaEvangelist
[Avatar]

Membro desde: 27/12/2007 19:31:45
Mensagens: 379
Offline

No meu projeto de utilidade tem em portugues, (http://www.guj.com.br/java/225445-opensutils-br4j---biblioteca-de-utilitarios-utils/1) se alguem tiver em ingles para adicionar na prox versão.. estaria ótimo!! abrçs


Projetos:
OpenSutils-Br4J - http://code.google.com/p/opensutils-br4j/

Priuli-Filter - http://sourceforge.net/projects/priuli-filter/

Certificação:
OCPJ 6 90%
[Email]
Brunacs10
Smalltalk

Membro desde: 11/04/2011 13:20:43
Mensagens: 1
Offline

Ola....

Tenho os seguintes numeros 27897359876000798000001 tenho que transformar esses numeros em um valor e não sei como se escreve por estenso. Alguem saberia me ajudar???

please
mausexdd
Virtual Machine Man
[Avatar]

Membro desde: 29/10/2010 17:49:43
Mensagens: 623
Localização: São Paulo
Offline

Revivendo o topico ... alguem ainda tem esse .jar

estou fazendo um programa para prencher cheques automaticamente

vlw
[Email]
pedroabs
JavaBaby
[Avatar]

Membro desde: 08/12/2008 13:33:12
Mensagens: 90
Localização: São Paulo
Offline

Peço licença aos colegas para postar o meu projeto

http://pedroabs.wordpress.com/2011/05/24/projeto-extenso-121-cento-e-vinte-e-um/

This message was edited 1 time. Last update was at 25/05/2011 16:30:27


MCP - VB6
SCJP / OCJP 6
-----------------------------
http://pedroabs.wordpress.com
http://twitter.com/pedroabs
[WWW]
douglasjunior
Debugger
[Avatar]

Membro desde: 03/10/2011 15:10:26
Mensagens: 68
Offline

pedroabs wrote:Peço licença aos colegas para postar o meu projeto

http://pedroabs.wordpress.com/2011/05/24/projeto-extenso-121-cento-e-vinte-e-um/



Obrigado Amigo...


Fiz apenas algumas modificações para não imprimir "Reais" e "Centavos", do resto está perfeito.


Att
Douglas Junior
[WWW]
mapleplayer
JavaBaby
[Avatar]

Membro desde: 16/06/2010 18:25:27
Mensagens: 90
Localização: Buri - SP
Offline

Desculpa reviver este tópico, mas precisava agradecer as pessoas que forneceram estas soluções.

Estou usando está aqui, pois achei fácil de entender.
jau wrote:
Só para deixar registrado, tem uma implementação disso em: http://github.com/jau/porextenso.

Exemplo de uso:



Resultado:


Obrigado novamente.

Por favor, pesquise primeiro antes de perguntar

OCJP 6



 
Índice dos Fóruns » Java Básico
Ir para:   
Powered by JForum 2.1.8 © JForum Team