<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[Cosinus-Problem]]></title><description><![CDATA[<p>Hallo,<br />
ich habe ein problem und weiß einfach nicht weiter.</p>
<p>und zwar sollte der cosinus von 90 grad als ergebnis 0 haben.<br />
da in c++ radiantwerte benötigt werden rechne ich meine 90 grad mit theta in radiant um.<br />
also ergebnis erhalte ich 1.5707...<br />
wenn ich jetzt aber cos(1.5707) bzw cos(theta) mit ausgeben lasse kommt nicht 0 raus und ich weiß nicht wieso.<br />
wäre klasse wenn ihr mir weiterhelfen könnten<br />
vg</p>
<pre><code class="language-cpp">#include &lt;cstdlib&gt;
#include&lt;iostream&gt;
#include&lt;math.h&gt;
#include&lt;cmath&gt;

using namespace std;

int main(int argc, char** argv) {

const double PI=3.141592653897932384626433832795;
double theta = 90*PI/180;

cout &lt;&lt;&quot;cos(theta): &quot; &lt;&lt;cos(theta) &lt;&lt;endl;

    return 0;
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/topic/287213/cosinus-problem</link><generator>RSS for Node</generator><lastBuildDate>Thu, 20 Aug 2026 13:52:54 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/287213.rss" rel="self" type="application/rss+xml"/><pubDate>Tue, 24 May 2011 18:45:07 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Cosinus-Problem on Tue, 24 May 2011 18:45:07 GMT]]></title><description><![CDATA[<p>Hallo,<br />
ich habe ein problem und weiß einfach nicht weiter.</p>
<p>und zwar sollte der cosinus von 90 grad als ergebnis 0 haben.<br />
da in c++ radiantwerte benötigt werden rechne ich meine 90 grad mit theta in radiant um.<br />
also ergebnis erhalte ich 1.5707...<br />
wenn ich jetzt aber cos(1.5707) bzw cos(theta) mit ausgeben lasse kommt nicht 0 raus und ich weiß nicht wieso.<br />
wäre klasse wenn ihr mir weiterhelfen könnten<br />
vg</p>
<pre><code class="language-cpp">#include &lt;cstdlib&gt;
#include&lt;iostream&gt;
#include&lt;math.h&gt;
#include&lt;cmath&gt;

using namespace std;

int main(int argc, char** argv) {

const double PI=3.141592653897932384626433832795;
double theta = 90*PI/180;

cout &lt;&lt;&quot;cos(theta): &quot; &lt;&lt;cos(theta) &lt;&lt;endl;

    return 0;
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2068087</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2068087</guid><dc:creator><![CDATA[Micksen1987]]></dc:creator><pubDate>Tue, 24 May 2011 18:45:07 GMT</pubDate></item><item><title><![CDATA[Reply to Cosinus-Problem on Tue, 24 May 2011 18:50:37 GMT]]></title><description><![CDATA[<p>Tja, so exakt rechnen Computer dann eben doch nicht. Aber auf 10 Stellen genau sollte doch hoffentlich ausreichen, oder?</p>
<p>edit: Und falls es wirklich drauf ankommt, ob da eine 0 oder etwas ungleich 0 als Ergebnis herauskommt, dann ist es üblich sich eine Obergrenze zu setzen unterhalb derer einfach alles als exakt 0 angenommen wird.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2068090</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2068090</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Tue, 24 May 2011 18:50:37 GMT</pubDate></item><item><title><![CDATA[Reply to Cosinus-Problem on Tue, 24 May 2011 18:52:24 GMT]]></title><description><![CDATA[<p>als ergebnis von cos(theta) bekomme ich -1.5406958e<sup>-10</sup></p>
]]></description><link>https://www.c-plusplus.net/forum/post/2068096</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2068096</guid><dc:creator><![CDATA[Micksen1987]]></dc:creator><pubDate>Tue, 24 May 2011 18:52:24 GMT</pubDate></item><item><title><![CDATA[Reply to Cosinus-Problem on Tue, 24 May 2011 18:59:44 GMT]]></title><description><![CDATA[<p>so sorry war ja die ganze zeit gar nich richtig eingeloggt.</p>
<p>problem ist nur das für 91-269 grad negative werte rauskommen müssen,<br />
und bei 90 grad müsste eigentlich exakt 0 rauskommen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2068100</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2068100</guid><dc:creator><![CDATA[micksen-ms]]></dc:creator><pubDate>Tue, 24 May 2011 18:59:44 GMT</pubDate></item><item><title><![CDATA[Reply to Cosinus-Problem on Tue, 24 May 2011 18:59:29 GMT]]></title><description><![CDATA[<p>schau dir mal std::numeric_limits&lt;T&gt;::epsilon() an</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2068104</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2068104</guid><dc:creator><![CDATA[asdfasd]]></dc:creator><pubDate>Tue, 24 May 2011 18:59:29 GMT</pubDate></item><item><title><![CDATA[Reply to Cosinus-Problem on Tue, 24 May 2011 19:02:30 GMT]]></title><description><![CDATA[<p>In deinem Pi fehlt eine Stelle.</p>
<pre><code class="language-cpp">const double PI=3.1415926535897932384626433832795;
                        // ^--- hier
</code></pre>
<p>Auf den hinteren Rängen hab ich jetzt nicht gekuckt, aber irgendwann passt das eh nicht mehr in einen double.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2068107</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2068107</guid><dc:creator><![CDATA[seldon]]></dc:creator><pubDate>Tue, 24 May 2011 19:02:30 GMT</pubDate></item><item><title><![CDATA[Reply to Cosinus-Problem on Tue, 24 May 2011 19:04:00 GMT]]></title><description><![CDATA[<p>seldon schrieb:</p>
<blockquote>
<p>In deinem Pi fehlt eine Stelle.</p>
<pre><code class="language-cpp">const double PI=3.1415926535897932384626433832795;
                        // ^--- hier
</code></pre>
<p>Auf den hinteren Rängen hab ich jetzt nicht gekuckt, aber irgendwann passt das eh nicht mehr in einen double.</p>
</blockquote>
<p>Ahh, das erklärt auch, warum es nur auf 10 Stellen genau passt. Das war erstaunlich ungenau.</p>
<p>@Threadersteller: Kann es sein, dass dir nicht klar ist, was -1.5406958e-10 bedeutet?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2068108</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2068108</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Tue, 24 May 2011 19:04:00 GMT</pubDate></item><item><title><![CDATA[Reply to Cosinus-Problem on Tue, 24 May 2011 19:08:03 GMT]]></title><description><![CDATA[<p>ich denke das es so in etwa -0.0000699 ist, allerdings nicht genau 0</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2068112</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2068112</guid><dc:creator><![CDATA[micksen-ms]]></dc:creator><pubDate>Tue, 24 May 2011 19:08:03 GMT</pubDate></item><item><title><![CDATA[Reply to Cosinus-Problem on Tue, 24 May 2011 19:09:18 GMT]]></title><description><![CDATA[<p>warum nicht gleich so?</p>
<pre><code class="language-cpp">#include &lt;cmath&gt;
const double pi = std::acos(-1.); //ist das eigentlich ISO conform? also eine konstante über ne funktion initialisieren (in c++0x gibts dafür ja constexpr
</code></pre>
<p>Wobei darauf zu achten ist, dass -1. double ist. Falls du long double precision willst, musst du 1.L nehmen oder in long double casten, damit die richtige acos funktion benutzt wird.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2068114</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2068114</guid><dc:creator><![CDATA[asdasd]]></dc:creator><pubDate>Tue, 24 May 2011 19:09:18 GMT</pubDate></item><item><title><![CDATA[Reply to Cosinus-Problem on Tue, 24 May 2011 19:11:10 GMT]]></title><description><![CDATA[<p>-1.5406958e-10 ist -1.5406958 * 10<sup>-10</sup> oder -0.00000000015406958. Mit richtigem Pi kriege ich es auf 6 * 10<sup>-17</sup> runter, aber ganz genau wirst du es nie bekommen - Pi ist nicht genau darstellbar, und überhaupt ist die Mantisse eines double begrenzt - in der Regel auf 53 <strong>binäre</strong> Stellen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2068115</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2068115</guid><dc:creator><![CDATA[seldon]]></dc:creator><pubDate>Tue, 24 May 2011 19:11:10 GMT</pubDate></item><item><title><![CDATA[Reply to Cosinus-Problem on Tue, 24 May 2011 19:28:23 GMT]]></title><description><![CDATA[<p>alles klar ich hab es jetzt einfach so gemacht:</p>
<pre><code class="language-cpp">#include &lt;cstdlib&gt;
#include&lt;iostream&gt;
#include&lt;math.h&gt;
#include&lt;cmath&gt;

using namespace std;

/*
 * 
 */
int main(int argc, char** argv) {
    double a;
    const double PI=3.1415926535897932384626433832795;
    double theta = 90*PI/180;
    a=cos(theta);
     if(a&lt;0.0001)a=0;
    cout &lt;&lt;&quot;cos(theta): &quot; &lt;&lt;a &lt;&lt;endl;

    return 0;
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2068123</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2068123</guid><dc:creator><![CDATA[micksen-ms]]></dc:creator><pubDate>Tue, 24 May 2011 19:28:23 GMT</pubDate></item><item><title><![CDATA[Reply to Cosinus-Problem on Tue, 24 May 2011 19:33:58 GMT]]></title><description><![CDATA[<p>Damit wär ich vorsichtig. Irgendwann machst du mal ne numerische Newton-Iteration und stolperst darüber, dass deine Funktion nicht mehr stetig ist.</p>
<p>Wie wär's mit</p>
<pre><code class="language-cpp">std::cout &lt;&lt; std::fixed &lt;&lt; std::setprecision(4) &lt;&lt; std::cos(PI / 2) &lt;&lt; std::endl;
</code></pre>
<p>oder so?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2068128</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2068128</guid><dc:creator><![CDATA[seldon]]></dc:creator><pubDate>Tue, 24 May 2011 19:33:58 GMT</pubDate></item><item><title><![CDATA[Reply to Cosinus-Problem on Wed, 25 May 2011 09:19:29 GMT]]></title><description><![CDATA[<p>Micksen1987 schrieb:</p>
<blockquote>
<p>als ergebnis von cos(theta) bekomme ich -1.5406958e-10</p>
</blockquote>
<p>Dann ist theta einfach eine schlechte Approximation für pi/2 <em>oder</em> die Implementierung der Cosinus-Funktion ist minderwertig.</p>
<p>Wenn Du mit 64-bit doubles arbeitest sollte bei einem &quot;guten theta&quot; und bei einer &quot;guten Implementierung&quot; bei cos(theta) da etwas rauskommen, was betragsmäißg höchstens 10<sup>-15</sup> ist.</p>
<p>Bei IEEE-754 64-bit Fließkommazahlen gibt es 2<sup>51</sup>-1 unterschiedliche Zahlen, die zwischen 1 und 2 liegen und in diesem Fließkommaformat darstellbar sind. pi/2 ist aber nicht dabei. Das heißt, Du kannst pi/2 nur mir theta = pi/2 + error approximieren. Da cos(pi/2 + err) ≈ cos(pi/2) - err und |err| hier bei guter Approximation von pi/2 kleiner als 10<sup>-15</sup> sein sollte, müsste auch |cos(pi/2+err)| &lt; 10<sup>-15</sup> gelten.</p>
<p>Siehe<br />
- <a href="http://download.oracle.com/docs/cd/E19957-01/806-3568/ncg_goldberg.html" rel="nofollow">what every computer scientist should know about floating-point arithmetic</a><br />
- Grundlagen der Numerik (bzgl Fehlerfortpflanzung und co)</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2068305</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2068305</guid><dc:creator><![CDATA[krümelkacker]]></dc:creator><pubDate>Wed, 25 May 2011 09:19:29 GMT</pubDate></item></channel></rss>