Hulp nodig met rekenmachine

Pagina: 1
Acties:

Onderwerpen


Verwijderd

Topicstarter
Beste Tweakers,

Gisteren ben ik begonnen met het programmeren met Visual Basic. Een van de beginsels is het maken van een rekenmachine, dus dat is wat ik ook ging doen. Tot nu toe gaat alles goed, totdat ik een vierkantswortelfunctie wilde toevoegen...

Voor plus, min, gedeeld door en keer gebruik ik dit:
double val1, val2;
val1 = double.Parse(textBox1.Text)
val2 = double.Parse(textBox2.Text);
textBox3.Text = (val1 + val2).ToString();

Afbeeldingslocatie: http://i50.tinypic.com/2rvzmms.png

En dan verander ik bij de laatste regel de plus naar een '-' of een '/'. Alleen ik weet niet wat ik moet doen om een vierkantswortel toe te voegen. Ik heb al op internet gekeken alleen is de opbouw heel anders dan de mijne.

Ik vroeg me dus af of iemand mij hiermee kan helpen. :*)

  • 0fbe
  • Registratie: Januari 2004
  • Laatst online: 21:41

  • MaximusTG
  • Registratie: April 2003
  • Niet online
(overleden)
a^b is je al gelukt dus? een vierkantswortel is niets meer dan a^(1/2)

Zin in pizza? Probeer 'mijn' pizzarecept eens! Laatste versie pizzarecept Blog:KookKompas


Verwijderd

Topicstarter
Hartstikke bedankt, ik zal er naar kijken.

Verwijderd

Topicstarter
Helaas is a^b mij ook nog niet gelukt.
MaximusTG schreef op woensdag 12 september 2012 @ 18:36:
a^b is je al gelukt dus? een vierkantswortel is niets meer dan a^(1/2)

  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
Ben je nou bezig met Visual Basic of C# :? Je praat over "begonnen met het programmeren met Visual Basic", hangt een C# tag aan 't topic en post C#-syntax code...

Either way, de class waarin je geïnteresseerd bent heet Math en bevat een heleboel handige methods ;) (en een paar fields :P )

Ga je je trouwens ook maar vast even inlezen in (o.a.) Floats en afronding want daar ga je geheid tegenaan lopen als je straks een simpele "3 + 3" doet en daar 6.00000000001 uitkomt (bij wijze van) ;)

[ Voor 92% gewijzigd door RobIII op 12-09-2012 18:53 ]

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


Verwijderd

Topicstarter
Ik ben begonnen met C# ( Sorry voor de onduidelijkheid) . Hartstikke bedankt voor de verwijzingen!

Acties:
  • 0 Henk 'm!

  • andrevdl
  • Registratie: Mei 2013
  • Laatst online: 26-08 22:29
int a;
int b;

math.pow(a,b);

Acties:
  • 0 Henk 'm!

Verwijderd

Alleen is C# case sensitive en wil Math.Pow double's en geen int's.
Goede topickick.

Acties:
  • 0 Henk 'm!

  • andrevdl
  • Registratie: Mei 2013
  • Laatst online: 26-08 22:29
Je moet alles met Double doen, die heeft een dubbele precieze en kan komma getallen.
De waardes die Math er uit gooit zijn allemaal Double. Dus de oplossing voor jouw probleem is:

//input
Double varA = Convert.ToDouble(label1.Text);
Double varB = Convert.ToDouble(label2.Text);

//verwerken en uitgeven
labelAntwoord.Text = Math.Pow(varA, VarB);

Acties:
  • 0 Henk 'm!

  • Cor453
  • Registratie: Mei 2011
  • Laatst online: 17-09 12:25
Wat Cheatah bedoelt is dat je een anderhalf jaar oud topic kickt. Niet zo slim, en je doet het ook niet helemaal goed. Want in jouw eerste reactie heb je het over int's (je declareert ze) en dan ga je daarna een functie gebruiken met doubles...

achja, laat ook maar. Math.Pow(a, b) wil alleen doubles, en daar komt een double uit.

Wat mij betreft mag-ie dicht!

Acties:
  • 0 Henk 'm!

Verwijderd

Van mij hoeft hij niet dicht, dit is veel te grappig.
andrevdl schreef op vrijdag 03 januari 2014 @ 00:29:
Je moet alles met Double doen, die heeft een dubbele precieze en kan komma getallen.
De waardes die Math er uit gooit zijn allemaal Double. Dus de oplossing voor jouw probleem is:

//input
Double varA = Convert.ToDouble(label1.Text);
Double varB = Convert.ToDouble(label2.Text);

//verwerken en uitgeven
labelAntwoord.Text = Math.Pow(varA, VarB);
Niet zo slordig doen. Je declareert Double varB maar gebruikt VarB. Wat zei ik nou net over case sensitive? Daarnaast zou ik double schrijven in plaats van Double. Of juist het volledige System.Double. Dat voorkomt gedoe met het importeren van eventuele andere namespaces dan System.

Verder mag je Convert.ToDouble best even in een try/catch blok zetten, maar dat had de TS ook wel mogen doen met double.Parse.
Overigens returnt Math.Pow een double en dat is geen string. Ik zou ook even een format opgeven, dat voorkomt dat de eindgebruiker een voor hem onleesbare representatie te zien krijgt. Ik stel Math.Pow(varA, varB).ToString("gewenste format") of String.Format("gewenste format", Math.Pow(varA, varB)) voor. Wel even rekening houden met NaN (zou niet voor moeten komen als je varA en varB goed cast en controleert, double.PositiveInfinity en double.NegativeInfinity.

Voor de archieven, zullen we maar zeggen.
Je moet alles met Double doen, die heeft een dubbele precieze en kan komma getallen.
De waardes die Math er uit gooit zijn allemaal Double. Dus de oplossing voor jouw probleem is:
Ik hoop dat je niet aan mij ging uitleggen wat een double is.
Pagina: 1