Тръби в басейн
Здравейде някой може ли да ми каже защо конзолата не ми пресмята този ред: "int poolPrFull = (int)(poolWater * (100 / poolV));".Остава 0.
var poolV= int.Parse(Console.ReadLine());
var P1Deb = int.Parse(Console.ReadLine());
var P2Deb = int.Parse(Console.ReadLine());
var time = double.Parse(Console.ReadLine());
var poolWater = ((P1Deb + P2Deb) * time);
int poolPrFull = (int)(poolWater * (100 / poolV));
int P1Pr = (int)((P1Deb * time) * (100 / poolWater));
int P2Pr = (int)((P1Deb * time) * (100 / poolWater));
if (poolV < poolWater)
{
Console.WriteLine("For {0} hours the pool overflows with {1} liters.", time, poolWater - poolV);
}
else
{
Console.WriteLine("The pool is {0}% full. Pipe 1: {1}%. Pipe 2: {2}%.", poolPrFull, P1Pr, P2Pr);
}
Кастването не действа ли върху крайния резултат в израза? Ако действа на всяко действие в израза значи там е проблема.
Кастването действа на следващия го израз, като скобите се приемат за един израз. Надявам се този пример да ти го разясни:
В такъв случай (int)(660 * (100 / 1000)) =66 а ми излиза 0
100 / 1000 е нула, ако искаш да делиш с дробна част сложи 'd' или ".0" след някое от числата.
Дааа, много съм зле. Мерси много!!!
Да, защото 100/1000=0