Problema ao incrementar um valor

2 respostas
R

Galera to com um problema.

Recebo um valor xxx.xxxx e quero adicionar +1 a esse valor a cada entrada

ela eh uma string pois usa mascara, retiro a mascara coloco em um long adiciono mais 1

volto para a string adiciono o ponto “.” da mascara e retorno o valor .

o problema é que os 3 primeiro digitos sao fixos supor 107.0000

entao vou incrementando esse valor so que quando chegar no 107.9999
ele passa o valor para 108.000

e nao é isso que eu quero keru q quando chege em 107.9999 ele va para 107.10000

o codigo é esse:

public String trasformar (String inscricao){

inscricao = mask.Mask(inscricao);

long trasformacao;
String inscricao2 =null;

trasformacao = Long.parseLong(inscricao);
trasformacao = trasformacao+1;
inscricao2 = Long.toString(trasformacao);

try {
inscricao2 = inscricao2.substring(0,3)+"."+inscricao2.substring(3);
} catch (Exception e) {
e.printStackTrace();
}

trasformacao=0;

return inscricao2;
}

Ja tentei usar a substring para tirar so a parte depois do ponto, mais ai acontece outro problema ele nao reconhe valor de 000 a esquerda no caso se eu tiver o valor 107.0000 e adicionar +1 a esse valor vou ter 107.1 e nao 107.0001 como eu desejo … alguem pode me ajudar a resolver o problema

2 Respostas

xandevieira

Sem para pensar, vc poderia utilizar somente o valor depois do ponto como vc falou, e utilizar esse codigo

public String formatInt(long numero, int nrCasas) {
		NumberFormat nf = NumberFormat.getInstance();
		nf.setGroupingUsed(false);
		if (nrCasas > 0) {
			nf.setMinimumIntegerDigits(nrCasas);
			nf.setMaximumIntegerDigits(nrCasas);
		}
		return nf.format(numero);
	}

onde numero eh o valor ja incrementado e o nrCasas será o inscricao2.length.

entendeu??

R

Valew ai a ajuda galera … resolvi o problema adicionando um if dentro do codigo
ficou ± assim

public String trasformar (String inscricao){
    	
    	inscricao = mask.Mask(inscricao);
    	
    	long trasformacao;
    	String inscricao2 =null;
    	
    	System.out.print("valor de teste "+inscricao.substring(3,4));
    	   		         
         if(inscricao.substring(3,4).equals("9")){ 
        	 trasformacao = Long.parseLong(inscricao.substring(3));
        	 trasformacao = trasformacao+1;
             inscricao2 = inscricao.substring(0,3)+"."+Long.toString(trasformacao);
             
         }else{
        	 trasformacao = Long.parseLong(inscricao);   	
        	 trasformacao = trasformacao+1;
             inscricao2 = Long.toString(trasformacao);
             inscricao2 = inscricao2.substring(0,3)+"."+inscricao2.substring(3);
         }
    	
		trasformacao=0;

    	return inscricao2;  	
    }

desse jeito ai … ele nem esta colocando 107.1 no lugar de 107.0001

e quando ele chegar no 107.9999 mais +1 vai para 107.10000

flw ate mais …

Criado 5 de junho de 2008
Ultima resposta 5 de jun. de 2008
Respostas 2
Participantes 2