Diskuze: Umocnění

C# .NET .NET (C# a Visual Basic) Umocnění American English version English version

Avatar
David Liška
Člen
Avatar
David Liška:

Ahoj, chtěl bych se zeptat, jak docílím toho, abych do exponentu dostal desetinné číslo. Např. když číslo 5 umocním na 2,5, vyjde mi místo 55,90 --> 125. Děkuji za radu.

Console.WriteLine("Zadejte základ mocniny:");
Console.WriteLine();
double zaklad = double.Parse(Console.ReadLine());
Console.WriteLine();
Console.WriteLine("Zadejte exponent:");
Console.WriteLine();
double exponent = double.Parse(Console.ReadLine());

double vysledek = zaklad;

for (float i = 0; i < (exponent - 1); i++)
    vysledek = vysledek * zaklad;
if (exponent == 0)
    vysledek = 1;

Console.WriteLine();
Console.WriteLine("Výsledek: {0}", vysledek);

Console.ReadKey();
Editováno 15. května 2:53
 
Odpovědět 15. května 2:51
Avatar
Odpovídá na David Liška
Ondřej Štorc:

Ahoj, máš tam blbě ten for:

  1. projetí: int i = 0; 0 < (2,5-1), OK
  2. projetí: int i = 1; 1 < (2,5-1), OK
  3. projetí: int i = 2; 2 < (2.5-1), Nic se neprovede

Jinak ani ten tvůj kód s mocněním pomocí exponentu s desetinou čárkou nepodporuje. Proč radši nevyžiješ třeba Mat.Pow(), udělá to co chceš, a budeš mít jistotu že správně.

Editováno 15. května 7:33
Nahoru Odpovědět 15. května 7:33
Život je příliš krátký na to, abychom bezpečně odebírali USB z počítače..
Avatar
David Liška
Člen
Avatar
David Liška:

Dal jsem na tvou radu a použil metodu Math.Pow(). Teď to funguje parádně. Díky moc.

Console.WriteLine("Zadejte základ mocniny:");
Console.WriteLine();
double zaklad = double.Parse(Console.ReadLine());
Console.WriteLine();
Console.WriteLine("Zadejte exponent:");
Console.WriteLine();
double exponent = double.Parse(Console.ReadLine());
double vysledek = 0;

vysledek = Math.Pow(zaklad, exponent);
if (exponent == 0)
vysledek = 1;

Console.WriteLine();
Console.WriteLine("Výsledek: {0}", vysledek);

Console.ReadKey();
Editováno 15. května 12:40
 
Nahoru Odpovědět 15. května 12:38
Avatar
hj.masek
Člen
Avatar
hj.masek:

Jen takovou malou připomínku nevolej zbytečně metodu Math.Pow pokud víš, že je exponent 0 :) nastavuješ výsledek až po zbytečném volání. Mám na mysli něco takového

double zaklad = 2;
double exponent = 3;
double vysledek = (exponent==0)?1:Math.Pow(zaklad,exponent);
Console.WriteLine();
Console.WriteLine("Výsledek: {0}", vysledek);
 
Nahoru Odpovědět 15. května 14:27
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 4 zpráv z 4.