Arredondamento ...diferença

Olá,

como não tenho um valor de procentagem faço o calculo abaixo

mas quando faço o percentual apurado vezes o valor base me dá uma diferença:

  • valor base 12.58 * 9 percentual = 1.1322

  • e o valor calculado é 1.20


*** diferença
1.1322 X 1.20

*** diferença

se alguém puder me ajudar agradeceria…


//calculo

                double vicms= 1.20;
		double vbc = 12.58;
		double resultado =0;
                int total =0; 		
		resultado = (vicms/vbc)*100;
		
		System.out.println("resultado  = "+resultado);
		

resultado = resultado  = 9.5389507154213 ---> fica 9 pois tem que ser inteiro

Multiplique antes de dividir.
Matematicamente as duas operações são equivalentes, computacionalmente não.

Saiba porque:
http://www.guj.com.br/posts/list/68086.java#357907
http://www.guj.com.br/posts/list/84121.java#448928

Se você precisa de muita precisão, considere também a possibilidade de usar BigDecimal.

fiz isso que vc deu a dica mas continua na mesma…

avleu

Qual é o seu problema?

A perda de precisão ou ter que truncar o resultado?

verifiquei que é as casas decimais e agora tenho um problema

como converter 912,01 para que saia 912.01

poderia me ajudar …

abs


		double vicms= 0.40;
		double vbc = 3.33;
		double resultado =0;
		int total=0;
		resultado = (vicms/vbc)*100;
		total = (int) resultado;
		System.out.println("resultado  = "+resultado);
		System.out.println("total  = "+total);

NumberFormat nn = new DecimalFormat("90.00");
System.out.println("nn="+nn.format(resultado));


resultado :

nn=912,01

Use esse construtor:
http://java.sun.com/j2se/1.4.2/docs/api/java/text/DecimalFormat.html#DecimalFormat(java.lang.String,%20java.text.DecimalFormatSymbols)