Thema: C++/Zahlenbereich

Hallo auch!<P>Ich hab in C++ einen Scrpipt für das Bestimmmen von Quadratwurzeln durch das Heronverfahren geschrieben.<P>Dabei fiel mir auf, dass die erhaltene Wurzel höchstens 5 Nachkommastellen hatte, obwohl das eine irrationale Zahl ist und C++ auf jeden Fall mehr als 5 Nachkommastellen berechnen kann...<P>How can I change it?<P>Netimperator

2

Re: C++/Zahlenbereich

Hm .. bin nicht so recht C++ fit .. aber evtl. hast du ne Variablendeklaration falsch gesetzt (evtl. float?). Andernfalls könntest du auch sprintf verwenden um die ausgabe auf eine Länge zu formatieren ..<P>evtl. hilft das weiter

_______________________________________________________________

/-/annes (j|g) ... http://www.jg-webdesign.de

Re: C++/Zahlenbereich

Danke, funktioniert leider nicht... (ich hab alle ergebniserfüllenden Typen ausprobiert gehabt, und mit sprintf gehts auch nit)<p>[ 18.09.2001: Beitrag editiert von: Netimperator ]

Re: C++/Zahlenbereich

code? schieb mal rüber.

mfG whitehouse

Re: C++/Zahlenbereich

und zur not:<BR>math.h: sqrt() *g*

mfG whitehouse

Re: C++/Zahlenbereich

...hier ein paar zeilen  [img]images/icons/wink.gif" border="0[/img]<P><BLOCKQUOTE><font size="1" face="Verdana, Helvetica, sans-serif">Code:</font><HR><pre><BR>#include <iostream.h><P>int main()<BR>{<BR>    <BR>    int i;<BR>    double a,b,aq,bOld;<BR>    <BR>    a=1;<BR>    b=7;<BR>    bOld=b;<P>    for(i=0;i<bOld;i++)<BR>        {<BR>        a = (a+b)/2;<BR>        b = bOld/a;<BR>        <BR>        cout << a << " " << b << " ";        <BR>        <BR>        aq=a*a;<P>        cout << aq << endl;<BR>        <BR>        if (a*a==7){<BR>            break;<BR>            }<P>        }<P>    return 0;<BR>}<BR></pre><HR></BLOCKQUOTE>

7

Re: C++/Zahlenbereich

Howdy! <P>Ich kann deinen code gerade nciht compileren, habe keinen c compiler und meine c zeitenb liegen nun 2 jahre zurueck, aber zu deinem problem:<P>double zahlen sollten eigentlich alles bi 7 oder 8 (weiss nicht mehr so genau) stellen hinter dem kommer speichern koennen.<BR>Versuch doch mal bOld gleich als fließkommerzahl zu initialisieren. Nahc dem Motto:<P>double bOld = 7.0000000;<P>und dann mal sehen, was beim compilieren passiert und ob das programm was anderes ausgibt ...<P>CU Az

Life is given...life is taken
and somewhere there between I live my life

Re: C++/Zahlenbereich

da ich mich nich so mit C++ auskenn: nimm PRINTF!<P>double kennt auch Zahlen wie 0.00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001<BR>(x * 2^e)<P>es ist schwer, pauschal Stellenangaben zu geben (double nimmt nämlich nach IEEE... nen 2-er-Exponenten)<P>printf("%.15g", zahl);<P>gibt zahl als double mit 15 Stellen Präzision (statt standardmäßig 6) aus (mit oder ohne 10-erE)

mfG whitehouse

Re: C++/Zahlenbereich

<BLOCKQUOTE><font size="1" face="Verdana, Helvetica, sans-serif">Code:</font><HR><pre><BR>#include <stdio.h> //oder <cstdio><P>int main()<BR>{<BR>  double a = 1, b = 7, aq, bold;<BR>  bold = b;<BR>  <BR>  for (int i = 0; i < bold; i++) {<BR>    a = (a + b) / 2;<BR>    b = bold / a;<BR>    aq = a * a;<BR>    printf("a = %.15g; b = %.15g; a² = %.15g", a, b, aq);<BR>    if (aq == bold) break;<BR>  }<BR>  return 0;<BR>}<BR></pre><HR></BLOCKQUOTE><P>der verbesserte code

mfG whitehouse

Re: C++/Zahlenbereich

achtung: aufgrund des double wird 7 von int nach double autogecastet

mfG whitehouse