WisFaq!

\require{AMSmath} geprint op vrijdag 22 november 2024

Re: Hoe maak je van een decimaal getal een breuk?

Tja, dit kan ik wel toepassen met een blocnote en een pen. Nu een slim algoritme waarmee een programmeerbare rekenmachine uit de voeten kan. Zelf denk ik aan het delen van teller en noemer door een factor. Indien bij beide een geheel getal verkregen wordt, is dit een factor. Wellicht is er ook iets mogelijk om de teller en de noemer te ontbinden in factoren en die vervolgens tegen elkaar weg te 'strepen'.

(Toepassing: Microsoft Excel heeft standaard niet de mogelijkheid om van decimaal naar breuk te herschrijven, doch het moet wel mogelijk zijn dit te programmeren.)

Cor
11-11-2004

Antwoord

Een mogelijk algoritme om een decimale breuk om te schrijven naar een gewone breuk is met behulp van kettingbreuken.
Dat staat beschreven op Raderwerk berekeningen.


Hier een script dat de berekeningen uitvoert:
Hieronder de broncode van dit script.
script
//schrijft het getal in de vorm van een kettingbreuk
function kettingbreuk(a)
{p=new Array()
i=0
while(a1)
{
a=a*10
i++
}
j=-1
while(j15&&a0)
{
j++
p[j]=Math.floor(a)
a=a-p[j]
if (a1e-6){a=1/a}else{a=0}
}
return p
}

//rekent een kettingbreuk om in een gewone breuk
function breuk()
{teller=p[j]
noemer=1
for(k=j-1;k=0;k--)
{
tnoemer=teller
teller=p[k]*teller+noemer
noemer=tnoemer
}
noemer=noemer*Math.pow(10,i)
r=ggd(teller,noemer)
teller=teller/r
noemer=noemer/r
}

//berekent de grootste gemene deler van m en n
function ggd(m,n)
{
if (m0) {m=-m}
if (n0) {n=-n}
if (nm) {r=m;m=n;n=r}
r=1
while (r!=0)
{
r=m%n
if (r!=0) {m=n; n=r}
}
return n
}

function compute(f)
{
with (Math){
getal=eval(f.invoer.value)
}
kettingbreuk(getal)
breuk()
s='ingevoerd: '
s=s+f.invoer.value+'='+getal+'\n'
s=s+'breuk: '+teller+'/'+noemer+'\n'
s=s+'en dat is: '+teller/noemer
alert(s)
}

/script
form name='f'
input type='text' size=30 name='invoer' value='0.013713713713713713'
input type='button' value='Bereken' onClick="compute(this.form)"
/form

hk
13-11-2004


© 2001-2024 WisFaq
WisFaq - de digitale vraagbaak voor het wiskunde onderwijs - http://www.wisfaq.nl

#29823 - Rekenmachine - Iets anders