Noticias

¡RECUERDA QUE SI ERES UN NUEVO USUARIO, DEBES PRESENTARTE PARA PODER PUBLICAR MENSAJES! | TENEMOS CANAL OFICIAL DE TELEGRAM: t.me/unity3dspain

Problema multiplicando y dividiendo

Iniciado por KevinLastra, Mayo 16, 2017, 07:38:42 PM

Tema anterior - Siguiente tema
Mayo 16, 2017, 07:38:42 PM Ultima modificación: Mayo 16, 2017, 08:41:57 PM por pioj
hola, tengo un problema tengo la siguiente ecuacion
 



   
       
   
   
      Porcentaje = (PesoNormal / 100) * (Durabilidad / 5)
   
   
      PesoActual = PesoNormal - Porcentaje
   
   
       
   

[/quote]
 
pero cuando quiero aplicarlo a codigo
 


void Start(){
     porcentaje = HightWeight / 100 * Durability / 5;
     Weight = HightWeight - porcentaje;
}

 
 
 
la variable porcantaje sale 0 siempre, porque pasa esto? alguien me dise que esta mal
 
 
 
Grasias

La única razón que se me ocurre es que estes usando valores enteros.
 
Es decir, si HightWeight o Durability, son enteros, al dividirlos, si estos valores no son lo suficientemente grandes darán valores cercanos a cero, que se redondearán a 0 y logicamente 0 * cualquier numero será 0.
 
Prueba a forzar que sean decimales.
 

porcentaje = (((float)(HightWeight))/100) * (((float)(Durability))/5);

 
Luego, si porcentaje es otro entero, también "redondeará" el valor, es decir, "2.743" lo pasará a "2", directamente.

@Harsel efectivamente, HightWeight y Durability son numeros enteros aqui dejo un poco mas amplio, tengo un problema con el codigo que pusiste arriba, porque no se puede convertir de float a int 
 
, bueno eso me dise el unity en el error que me sale.
 
 
 

int Durability;
int porcentaje;
int HightWeight;
int Weight;
void Start(){
     Durability = Random.Range(0,100);
     porcentaje = HightWeight / 100 * Durability / 5;
     Weight = HightWeight - porcentaje;
}

 
Grasias por responder tan rapido.

Cita de: KevinLastra date=1494961006@Harsel efectivamente, HightWeight y Durability son numeros enteros aqui dejo un poco mas amplio, tengo un problema con el codigo que pusiste arriba, porque no se puede convertir de float a int 
   
   
      , bueno eso me dise el unity en el error que me sale.
   
   
       
   
   

int Durability;
int porcentaje;
int HightWeight;
int Weight;
void Start(){
     Durability = Random.Range(0,100);
     porcentaje = HightWeight / 100 * Durability / 5;
     Weight = HightWeight - porcentaje;
}

   
      Grasias por responder tan rapido.
   


Sí, logicamente.
 
Simplemente castealo, o mejor, usa el convert de c#, por ejemplo de esta manera:
 

porcentaje = System.Convert.ToInt32((((float)HightWeight) / 100) * (((float)Durability) / 5));

 
 


Etiquetas: