Springen naar inhoud


- - - - -
VS 2013

Delen Getallen In String Vorm (Pi)

VS2013 Pi

  • Log in a.u.b. om te beantwoorden
Er zijn 2 reacties in dit onderwerp

#1 doebi

doebi

    Master Developer

  • Leden
  • PipPipPipPipPip
  • 539 berichten
    Laatst bezocht 14 jul 2019 17:53

Geplaatst op 06 november 2014 - 18:18

Hallo,

Ik wou just for fun een programma maken om PI te berekenen op een oneindig aantal decimalen (ttz tot m'n pc geheugen vol is).

Mijn oog viel op deze link http://www.wikihow.c.../Calculate-Pi?? meer bepaald de Gregory-Leibniz methode.
(  Pi = (4/1) - (4/3) + (4/5) - (4/7) + (4/9) - (4/11) + (4/13) - (4/15) ... )
Daarom dacht ik, deze formule in vb zwieren en de laptop op PI laten zweten.

Echter via de gewone datatypes (byte,word,long,double enz) heb ik bijlage geen cijfers of precisie genoeg.
Daarom bedacht ik om alles in strings te laten uitrekenen.

Nu, optellen en aftrekken zal geen probleem worden denk ik, kwestie van de strings dmv een while lus mooi onder elkaar te plaatsen en elke digit van rechts naar links verwerken.

Echter, het delen,dat wordt een pak lastiger. :?

Kan iemand me op weg helpen dit te doen (het delen gedeelte) ?

grtz

Visual Basic Code:
dim getal1 as string = "0"
dim getal2 as string = "0"
dim res as string = "0"
' ...
' invullen getal 1
'invullen getal 2
'
' ...
' berekenen res = getal1/ getal2
'...




#2 ArComAr

ArComAr

    VBIB Godfather

  • Leden
  • PipPipPipPipPipPipPipPip
  • 3788 berichten
    Laatst bezocht 04 mei 2018 13:52

Geplaatst op 07 november 2014 - 10:04

Mathematische bewerkingen doen op strings gaat nooit lukken. Als je option strict niet hebt opgestaan, zal het lijken dat je strings kan optellen en dergelijke, maar .NET probeert dan de waarde automatisch te converteren naar doubles. Wat er dan weer voor zorgt dat je in hetzelfde schuitje komt als voordien. Een ander nadeel van strings op deze manier te gebruiken, is dat je heel snel heel veel geheugen gaat gebruiken doordat voor elke concatenatie of bewerking er een geheel nieuwe string word aangemaakt in het geheugen.

Je hebt wel een BigInteger in .NET, maar dan zit je weer zonder precision. Nu zou je wel alles kunnen gaan vermenigvuldigen tot het positief blijft, maar dan lijkt het ook weer niet meer op het getal PI.

Ik ben wel op dit topic uitgekomen: http://stackoverflow...imal-class-in-c
Kijk naar het 2de antwoord. Daarin wordt een wrapper class geschreven rond BigInteger om toch de decimalen op te slaan. Misschien kan je daar eens mee aan de slag.

#3 Codemaster

Codemaster

    Senior Developer

  • Leden
  • PipPipPip
  • 130 berichten
    Laatst bezocht 20 apr 2015 16:11

Geplaatst op 07 april 2015 - 13:46

Je kan altijd eens kijkje nemen naar mijn code van een opdracht waarbij men 10000 cijfers na de comma moest berekenen.  http://www.vbib.be/i...ic/3013-deling/





Ook met taq VS 2013, VS2013, Pi voorzien

0 gebruiker(s) lezen dit onderwerp

0 lid(leden), 0 bezoeker(s), 0 anonieme gebruikers

Inloggen


[VS 2013] Untitled 1

Met dank aan J├╝rgen voor de jarenlange inzet van visualbasic.be (anno dec 2000)
Met dank aan Mike en Ronneke voor de jarenlange inzet van vbib.be (anno dec 2010)
Met dank aan PascalBianca voor de jarenlange inzet van vbib.be (anno dec 2016)