Ajuda com expressão

Pessoal estou fazendo um exercício, porém estou tendo problemas com a expressão (matemática)…

o calculo que tenho que fazer é o seguinte: número de passageiros (consumo1,5)(0,1capacidade de carga)/ manutenção* idade

porém está dando erro!!! o valor que deveria ser apresentado é 2,25 porém me é retornado 2,1. O que estou fazendo de errado???

float eficiencia_carro(){
		
		
			
		
		float valor;
		
		if (get_combustivel()==1 || get_combustivel()==2 || get_combustivel()==3){
			valor= ((get_num_passageiros()*getconsumo()*((1*10/100)*get_capacidadeCarga()))/get_manutencao()*Idade());
			
			return valor;
		}
		else if (get_combustivel()==4) {
			
			
			valor=get_num_passageiros()*getconsumo()*(1*10)/100*(10*15)/100*get_capacidadeCarga()/get_manutencao()*Idade(); //o erro está aqui!!!!!!!
			
					
			
			System.out.println("A eficiencia será :"+ valor);
			return valor;
		}
		else {
			return valor=-1;// indica erro...
		}
	}

Os valores que estou passando são os seguintes:

5*(10*(10/100))(300(15/10))/1*1000=2,25

Quando coloco para fazer primeiro as multiplicações, preferencia o eclipse acusa erros, o que estou fazendo de errado???Está faltando casas decimais no float, o que fazer???

Obrigado.

Cara, dá uma revisada nestas fórmulas, me parece que pelo que você descreveu em cima, ela tá errada.

Toma cuidado com os parênteses também, a equação de cima tá bem diferente dá de baixo em relação a isto.

Realmente, a equação que você descreve no texto não é a que está no código.

O que você descreveu,

em Java ficara assim:

valor = get_num_passageiros() * (getconsumo() * 1,5) * (0,1*get_capacidadeCarga())/(get_manutencao() * Idade());

Copia e cola o erro que você está obtendo. Acredito que seja necessário acrescentar um cast para converter o valor da sua equação para a variável float que você quer.

O cast ficaria assim:

valor = (float) (equação);

Observe que a depender do tipo (double, int ou float) de dado que você utiliza você irá obter resultados diferentes. Acho que isso deve estar acontecendo com você.

[code]float valor;

valor = 150/100; // valor = 1,0

valor = (float) 150/100; //valor = 1,5
[/code]

Em operações entre dois inteiros, o resultado será um inteiro. Logo 150/100 irá retornar 1 já que o 0,5 não faz parte dos inteiros. O seu resultado será aproximado e armazenado na variável float como 1.0. Daí a divergência do que você está esperando.

A partir do momento que um dos números se torna float (no meu exemplo o 150), o resultado da operação matemática será do operando que tem maior precisão, ou seja, o seu resultado será em float e irá retornar 1,5.

Olá

Uma curiosidade: por que vc não resolve as operações com os números em vez de pô-los na equação? Por que põe 1x10/100 em vez de escrever simplesmente 0.1? Já que esses números são conhecidos e constantes, fazer o programa calcular essas operações não tem sentido (na minha visão).

Em relação a variável valor, vc a tipificou como? Int, float, double etc? Neste trecho do código que pôs está faltando essa informação. Se for local, basta fazer float valor = (…), como você já sabe.

Em relação as equações, rever como foi sugerido. Mas, assim mesmo, se não me engano, na equação do erro falta um parêntesis no meio da equação, não no fim.

Seria mais fácil entender o que acontece se vc mostrasse a mensagem de erro. Geralmente ela diz o que fazer, tanto no Eclipse como no NetBeans (se bem que às vezes não dá para entender o que ele quer que façamos…hahahahaha).

Abs.