quinta-feira, 16 de setembro de 2010

Classe Utilitaria para trabalhar com numeros

package funcoes.util;

import java.math.BigDecimal;
import java.text.DecimalFormat;
import javax.swing.JOptionPane;

public class Numeros {
private int incrementado;


/**
* Corta o numero de casas decimais indicados
* @param numero numero com os quebrados
* @param casasDecimais numero de casas que devem ser retornadas depois da virgula
* @return retorna um double com o numero de casas escolhido.
*/
public static double ignoraCasasDecimais(double numero, int casasDecimais) {
String quebrados = String.valueOf(numero);
String inteiros = quebrados.substring(0, quebrados.indexOf("."));
quebrados = quebrados.substring(quebrados.indexOf(".") + 1, quebrados.length());
String temp = "";

if (quebrados.length() >= casasDecimais) {
casasDecimais -= 1;

for (int i = 0; i <= casasDecimais; i++) { temp += quebrados.charAt(i); } } else { temp = quebrados; } return Double.parseDouble(inteiros + "." + temp); } /** * * @param valor1 valor 100% * @param valor2 porcentagem a ser descontada * @return valor1 menos valor2% */ public static double descontaPorcentagem(double valor1, double valor2) { return valor1 - (getValorDePorcentagem(valor1, valor2)); } /** * * @param valor1 valor 100% * @param valor2 o % * @return Retorna o valor da porcentagem */ public static double getValorDePorcentagem(double valor1, double valor2) { return (valor1 / 100) * valor2; } /** * * @param valor1 valor principal 100% * @param valor2 valor que vc quer saber o % do valor principal * @return double com o % */ public static double getPorcentagem(double valor1, double valor2) { return valor2 / (valor1 / 100); } /** * Valida uma string em número inteiro * @param inteiro string contendo um valor inteiro * @return uma string com o msmo valor se true, e 0 caso false */ public static String validaInteiro(String inteiro) { try { Integer.parseInt(inteiro); return inteiro; } catch (Exception e) { JOptionPane.showMessageDialog(null, "Insira somente valores inteiros"); return "0"; } } /** * retorna o numero de casas decimais de um numero * @param numero * @return */ public static int getNumerosCasasDecimais(double numero) { String temp = String.valueOf(numero); String[] temp2 = temp.split("[.]"); return temp2[1].length(); } /** * retorna uma string com as casas decimais do numero * @param numero numero quebrado * @return */ public static String getCasasDecimais(Double numero) { String[] strNumero = String.valueOf(numero).split("[.]"); return strNumero[1]; } public static double truncaCasasDecimais(double numero) { if (getNumerosCasasDecimais(numero) > 2) {
String num = getCasasDecimais(numero);
if (Integer.parseInt(num.substring(2, 3)) >= 1) {
numero = Numeros.arredondaPraCima(2, numero);
}
}
return numero;
}

/**
* valida uma string em um double
* @param Doubl string contendo um valor double (0.0), se na sring conter uma "," essa função transforma em "."
* @return uma string com o mesmo valor caso true, e 0 caso false;
*/
public static String validaDouble(String Doubl) {
try {
Doubl = Strings.substituirTrechos(new String[]{","}, ".", Doubl);
Double.parseDouble(Doubl);
return Doubl;
} catch (Exception e) {
JOptionPane.showMessageDialog(null, "Insira somente valores numericos");
return "0";
}
}

/**
* valida uma string em Float
* @param Floa string contendo um valor float
* @return uma string com o memso valor caso true, ou 0 caso false
*/
public static String validaFloat(String Floa) {
try {
Floa = Strings.substituirTrechos(new String[]{","}, ".", Floa);
Float.parseFloat(Floa);
return Floa;
} catch (Exception e) {
JOptionPane.showMessageDialog(null, "Insira somente valores numericos");
return "0";
}
}

/**
*
* @param numero numro a ser transformado
* @param mascara mascara ex:#0,00
* @return string com formato
*/
public static String Formatar(String mascara, double numero) {
DecimalFormat formatador = new DecimalFormat();
formatador.applyPattern(mascara);

String temp = formatador.format(numero);
temp = temp.replaceAll(",", ".");
return temp;
}

/**
* arredonda o numero quebrado pra cima
* @param casasDecimais numero de casas que vc deseja que o numero retorne
* @param numero numero que sera formatado
* @return retorna o mesmo numero com a ultima casa decimal arredondada pra cima
*/
public static double arredondaPraCima(int casasDecimais, double numero) {
//VERIFICANDO SE PRECISA ARREDONDAR
String num = String.valueOf(numero);
num = num.substring(num.indexOf('.') + 1, num.length()) + "0000000000000000000000";

num = num.substring(casasDecimais, casasDecimais + 3);

if (Double.parseDouble(num) == 0) {//AUMENTAR
return numero;
}

BigDecimal bd = new BigDecimal(numero);
bd = bd.setScale(casasDecimais, BigDecimal.ROUND_UP);
return bd.doubleValue();
}

public static double arredonda(String mascara, double numero) {
DecimalFormat formatador = new DecimalFormat();
formatador.applyPattern(mascara);

String temp = formatador.format(numero);
temp = temp.replaceAll(",", ".");
return Double.parseDouble(temp);
}

/**
* entra um double sai um integer
* @param numero
* @return
*/
public static int doubleToInteger(double numero) {
int i = (int) numero;
return i;
}

public static String doubleToString(double numero) {
return Formatar("#", numero);
}

public static String doubleToIntegerToString(double numero) {
int i = (int) numero;
return String.valueOf(i);
}

public static double IntegerToDouble(int numero) {
return Double.parseDouble(String.valueOf(numero));
}

/**
* entra um float sai Double
* @param numero
* @return
*/
public static Double floatToDouble(float numero) {
Double d = new Double(String.valueOf(numero));
return d;
}

public int getIncrementado() {
return incrementado++;
}

public void setIncrementado(int aIncrementado) {
incrementado = aIncrementado;
}
}

Nenhum comentário:

Postar um comentário