⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 numbertoletterconverter.java

📁 Convierte números a letras
💻 JAVA
字号:
package general;

import java.util.ArrayList;
import java.util.List;

public class NumberToLetterConverter 
{
	private static final String[] UNIDADES = 
	{ "", "UN ", "DOS ", "TRES ",
		"CUATRO ", "CINCO ", "SEIS ", "SIETE ", "OCHO ", "NUEVE ", "DIEZ ",
		"ONCE ", "DOCE ", "TRECE ", "CATORCE ", "QUINCE ", "DIECISEIS ",
		"DIECISIETE ", "DIECIOCHO ", "DIECINUEVE ", "VEINTE " };

	private static final String[] DECENAS = 
	{ "VENTI", "TREINTA ", "CUARENTA ",
		"CINCUENTA ", "SESENTA ", "SETENTA ", "OCHENTA ", "NOVENTA ",
		"CIEN " };

	private static final String[] CENTENAS = 
	{ "CIENTO ", "DOSCIENTOS ",
		"TRESCIENTOS ", "CUATROCIENTOS ", "QUINIENTOS ", "SEISCIENTOS ",
		"SETECIENTOS ", "OCHOCIENTOS ", "NOVECIENTOS " };

	private static final String[] SEP =
	{
		"", "MIL ", "MILLON ;MILLONES ", "MIL ", "BILLON ;BILLONES ", "MIL ", "TRILLON ;TRILLONES "};
	
	
	
	
	/**
	 * Convierte a letras un numero de la forma $123,456.32 (StoreMath)
	 * <p>
	 * Creation date 5/06/2006 - 10:20:52 AM
	 * 
	 * @param number
	 *            Numero en representacion texto
	 * @return Numero en letras
	 * @since 1.0
	 */
	public static String convertNumberToLetter(String number, String separadorDec) 
	{
		// divide los enteros de los decimales
		String [] num = number.split(separadorDec);
		String centavos = "";
		List ent = new ArrayList();
		List plural = new ArrayList();
		
		// divide en grupos de tres desde el final
		int modulo = num[0].length() % 3; 
		int div = (num[0].length() - modulo) / 3;
		int indice = 0;
		//String valor = "";
		if (modulo > 0)
		{
			indice = modulo;
			ent.add(num[0].substring(0, indice));
		}
		
		for(int i = 0; i < div; i++)
		{
			ent.add(num[0].substring(indice, indice + 3));
			indice += 3; 
		}
		
		for(int i= 0; i< ent.size();i++)
		{
			System.out.println("[" + i + "]: " + ent.get(i));
		}
		
		if(num.length > 1)
		{
			centavos = " " + num[1] + "/100";
		}
		
		return proceso(ent).trim() + centavos;
		
	}

	private static String proceso(List entero)
	{
		String res = "";
		int j = 0;
		for(int i = entero.size() - 1; i >= 0; i--)
		{
			String valor = entero.get(i).toString();
			String cadena[] = SEP[j].split(";");
			String cad = cadena[0];
			if(cadena.length > 1 && Integer.parseInt(valor) != 1)
				cad = cadena[1];
			if(Integer.parseInt(valor) == 0 && j % 2 != 0)
				cad = " ";
			res = convertNumber(valor) + cad + res.trim();
			j++;
		}
		return res;
	}
	
	private static String procesarCentavos(String centavosCadena)
	{
		String converted = "";
		//		 Descompone los centavos - Camilo
		int centavos = Integer.parseInt(String.valueOf(getDigitAt(
				centavosCadena, 2))
				+ String.valueOf(getDigitAt(centavosCadena, 1))
				+ String.valueOf(getDigitAt(centavosCadena, 0)));
		if (centavos == 1)
			converted += " CON UN CENTAVO";
		if (centavos > 1)
			converted += " CON " + convertNumber(String.valueOf(centavos))
					+ "CENTAVOS";
	
		return converted;
	}
	
	/**
	 * Convierte un numero en representacion numerica a uno en representacion de
	 * texto. El numero es valido si esta entre 0 y 999'999.999
	 * <p>
	 * Creation date 3/05/2006 - 05:37:47 PM
	 * 
	 * @param number
	 *            Numero a convertir
	 * @return Numero convertido a texto
	 * @throws NumberFormatException
	 *             Si el numero esta fuera del rango
	 * @since 1.0
	 */
	public static String convertNumberToLetter(double number) throws NumberFormatException 
	{
		String converted = new String();
	
		// Validamos que sea un numero legal
		double doubleNumber = Math.round(number);
		if (doubleNumber > 999999999)
			throw new NumberFormatException(
					"El numero es mayor de 999'999.999, "
							+ "no es posible convertirlo");
	
		String splitNumber[] = String.valueOf(doubleNumber).replace('.', '#')
				.split("#");
	
		// Descompone el trio de millones - 

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -