Trabalhando com numeros

Alguem conhece alguma função que converte numeros arabicos em numeros por extenso e vice-versa.

desde já agradeço

http://stella.caelum.com.br/core-inwords.html

O mais interessante para mim é transformar numeros em extenso em numeros arabicos, o framework acima não faz isso

Isso parece lição de casa.

Por que é que alguém iria querer um método do tipo “quatrocentos e quarenta e quatro bilhões, quatrocentos e quarenta e quatro milhões, quatrocentos e quarenta e quatro mil, quatrocentos e quarenta e quatro reais e quarenta e quatro centavos” = “R$ 444.444.444.444,44” na prática?

Eu digo isso porque na prática é bastante difícil escrever um programa desses que funcione bem, já que as pessoas normalmente escrevem os números por extenso de forma incompleta ou mesmo errada.

Para fazer um preenchedor de cheques? De qualquer forma, parece mesmo lição de casa.

Sem falar que as regras do “e” dos numerais extensos são tão cheias de exceções, que nem deveriam ser chamadas de regras… Ex:
Um milhão e duzentos mil
Um milhão duzentos e um mil

Um milhão e cem

http://stella.caelum.com.br/core-inwords.html já dá pra fazer o preenchedor de cheques. Mas o contrário é bem mais chato.

Isso pode ser resolvido, por exemplo, com uma gramática - lembra-se das suas aulas de teoria de compiladores? É questão de desempoeirar aqueles velhos livros, gerar uma gramática, e um interpretador de gramáticas - use o Antlr, por exemplo.

para quem caçoou… vai aqui meu desabafo! Amigos eu não preciso de ninguem para me ajudar a fazer tarefinhas… to fazendo mestrado em I.A, implementando um modelo cognitivo.
para quem me ajudou muito obrigado.

Abraços…

Calma, ninguém estava caçoando. Só ficamos curiosos em descobrir para que você usa isso.

E, eu mesmo já fiz uma lição de casa similar… hehehehe

Anotado.

Neste momento estou trabalhando com Processamento de Linguagem Natural e então quando se tem um texto que expressa um cálculo, gostaria de transformar em um formato que o computador possa entender, por exemplo:

Entrada: quanto é dois mais trinta e cinco
Saída desejada: quanto é 2+35

Realmente fazer uma função me retorne isso é bem complicado, porém como sou meio novo em programação java peço ajuda de vez enquando para que eu não precise reinventar a roda entende…
Abraços…

Ah, você precisa de uma gramática da linguagem natural.

Que tal limitar o seu problema a números de 0 a cem, só para simplificar seu problema?

Nesse caso, nenhum número terá um significado posicional diferente, e então “noventa e nove” pode ser interpretado sempre como o número 99, não como o multiplicador do número 1000 quando você tem a expressão “noventa e nove mil”.

Faça todas as partes o mais superficialmente possível, e depois concentre-se em algumas áreas.

Por exemplo, interpretar o número “quatrocentos e quarenta e quatro bilhões, quatrocentos e quarenta e quatro milhões, quatrocentos e quarenta e quatro mil, quatrocentos e quarenta e quatro reais e quarenta e quatro centavos” você pode deixar para bem depois.