<?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[Pi angeben]]></title><description><![CDATA[<p>Wenn ihr in einem Programm Pi speichern müsst wie würdet ihr es tun (also als Konstante oder so)?</p>
<p>MfG, Acid_Liquid</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/287684/pi-angeben</link><generator>RSS for Node</generator><lastBuildDate>Thu, 20 Aug 2026 08:44:36 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/287684.rss" rel="self" type="application/rss+xml"/><pubDate>Thu, 02 Jun 2011 09:25:10 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Pi angeben on Thu, 02 Jun 2011 09:25:10 GMT]]></title><description><![CDATA[<p>Wenn ihr in einem Programm Pi speichern müsst wie würdet ihr es tun (also als Konstante oder so)?</p>
<p>MfG, Acid_Liquid</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2072308</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2072308</guid><dc:creator><![CDATA[Acid_Liquid]]></dc:creator><pubDate>Thu, 02 Jun 2011 09:25:10 GMT</pubDate></item><item><title><![CDATA[Reply to Pi angeben on Thu, 02 Jun 2011 09:26:25 GMT]]></title><description><![CDATA[<p>Wenn du die Adresse nehmen können musst, dann als statische Konstante. Ansonsten als Aufzählung ( <code>enum</code> ).</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2072309</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2072309</guid><dc:creator><![CDATA[EOutOfResources]]></dc:creator><pubDate>Thu, 02 Jun 2011 09:26:25 GMT</pubDate></item><item><title><![CDATA[Reply to Pi angeben on Thu, 02 Jun 2011 09:31:39 GMT]]></title><description><![CDATA[<p>Ich würde eine vom Compiler zur Verfügung gestellte Konstante ala M_PI verwenden. Oder wenn sonst nichts besseres verfügbar ist:</p>
<pre><code class="language-cpp">const double pi = 4 * atan(1);// bzw. 2 * acos(0)
</code></pre>
<p>Edit:</p>
<p>EOutOfResources schrieb:</p>
<blockquote>
<p>Ansonsten als Aufzählung (enum).</p>
</blockquote>
<p>enums kann man ja auch so gut mit Gleitkomma-Werten initialisieren <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f609.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--winking_face"
      title=";)"
      alt="😉"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/2072310</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2072310</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Thu, 02 Jun 2011 09:31:39 GMT</pubDate></item><item><title><![CDATA[Reply to Pi angeben on Thu, 02 Jun 2011 09:33:07 GMT]]></title><description><![CDATA[<p>CStoll schrieb:</p>
<blockquote>
<p>Ich würde eine vom Compiler zur Verfügung gestellte Konstante ala M_PI verwenden.</p>
</blockquote>
<p>Gehört nicht zum Standard...</p>
<p>CStoll schrieb:</p>
<blockquote>
<p>enums kann man ja auch so gut mit Gleitkomma-Werten initialisieren <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f609.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--winking_face"
      title=";)"
      alt="😉"
    /></p>
</blockquote>
<p>Oh, mist. Ich überseh' das immer...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2072311</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2072311</guid><dc:creator><![CDATA[EOutOfResources]]></dc:creator><pubDate>Thu, 02 Jun 2011 09:33:07 GMT</pubDate></item><item><title><![CDATA[Reply to Pi angeben on Thu, 02 Jun 2011 09:33:05 GMT]]></title><description><![CDATA[<p>EOutOfResources schrieb:</p>
<blockquote>
<p>CStoll schrieb:</p>
<blockquote>
<p>Ich würde eine vom Compiler zur Verfügung gestellte Konstante ala M_PI verwenden.</p>
</blockquote>
<p>Gehört nicht zum Standard...</p>
</blockquote>
<p>Habe ich auch nie behauptet.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2072312</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2072312</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Thu, 02 Jun 2011 09:33:05 GMT</pubDate></item><item><title><![CDATA[Reply to Pi angeben on Thu, 02 Jun 2011 09:47:40 GMT]]></title><description><![CDATA[<p>Wir wärs mit boost?</p>
<pre><code class="language-cpp">const double pi = boost::math::constants::pi&lt;double&gt;();
</code></pre>
<p>*Edit<br />
Oh... wie kann man Smileys deaktivieren innerhalb von Code?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2072313</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2072313</guid><dc:creator><![CDATA[icarus2]]></dc:creator><pubDate>Thu, 02 Jun 2011 09:47:40 GMT</pubDate></item><item><title><![CDATA[Reply to Pi angeben on Thu, 02 Jun 2011 09:47:07 GMT]]></title><description><![CDATA[<p>Dazu hab ich gleich mal 2 Fragen<br />
1.: Kann man aussagen darüber machen, welche Möglichkeit pi zu generieren am Genausten ist? Weil eigentlich ist das ja eh alles implementation defined (also der Algorithmus)</p>
<pre><code class="language-cpp">const long double pi = std::acos(-1.L);
//vs
const long double pi = 4 * std::atan(1.L)
</code></pre>
<p>Bei der 2. Methode werden ja durch die Multiplikation zwei Nachkommastellen sozusagen weggeschnitten</p>
<p>2.: Ist es nach dem aktuellen Standard erlaubt, eine konstante Variable durch eine Funktion wie acos zu initialisieren, oder ist das eine Kompilererweiterung? [in C++0x gibts für sowas ja constexpr)?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2072314</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2072314</guid><dc:creator><![CDATA[asdfasd]]></dc:creator><pubDate>Thu, 02 Jun 2011 09:47:07 GMT</pubDate></item><item><title><![CDATA[Reply to Pi angeben on Thu, 02 Jun 2011 09:55:24 GMT]]></title><description><![CDATA[<p>asdfasd schrieb:</p>
<blockquote>
<p>Dazu hab ich gleich mal 2 Fragen<br />
1.: Kann man aussagen darüber machen, welche Möglichkeit pi zu generieren am Genausten ist? Weil eigentlich ist das ja eh alles implementation defined (also der Algorithmus)</p>
<pre><code class="language-cpp">const long double pi = std::acos(-1.L);
//vs
const long double pi = 4 * std::atan(1.L)
</code></pre>
<p>Bei der 2. Methode werden ja durch die Multiplikation zwei Nachkommastellen sozusagen weggeschnitten</p>
</blockquote>
<p>Nein, es werden keine Nachkommastellen abgeschnitten, nur der Exponent um zwei Schritte erhöht. Was nun genauer ist, kann ich allerdings nicht sagen</p>
<blockquote>
<p>2.: Ist es nach dem aktuellen Standard erlaubt, eine konstante Variable durch eine Funktion wie acos zu initialisieren, oder ist das eine Kompilererweiterung? [in C++0x gibts für sowas ja constexpr)?</p>
</blockquote>
<p>Afaik kannst du Konstanten mit allem füttern, was dir vor die Flinte kommt, zumindest solange du den Wert erst zur Laufzeit benötigst. Problematisch wird es, wenn du den Wert in einem Kontext benötigst, wo ihn der Compiler auswerten will.<br />
(bei mathematischen Werten wie Pi dürften das eher Optimierungsfragen sein)</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2072318</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2072318</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Thu, 02 Jun 2011 09:55:24 GMT</pubDate></item><item><title><![CDATA[Reply to Pi angeben on Thu, 02 Jun 2011 09:57:04 GMT]]></title><description><![CDATA[<p>Wieso nicht einfach zur Compilezeit mit dem Wert füttern?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2072319</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2072319</guid><dc:creator><![CDATA[EOutOfResources]]></dc:creator><pubDate>Thu, 02 Jun 2011 09:57:04 GMT</pubDate></item><item><title><![CDATA[Reply to Pi angeben on Thu, 02 Jun 2011 10:00:20 GMT]]></title><description><![CDATA[<p>Sagt mal, habt ihr alle kein Internet? Wozu sich pi erst berechnen lassen? Noch dazu mit einer Methode die möglicherweise auf der letzten Stelle ungenau sein könnte.</p>
<pre><code class="language-cpp">const double PI = 3.1415926535897932384626434;

// oder

const long double PI = 3.14159265358979323846264338327950288419716939937510;
</code></pre>
<p>Und gut is.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2072320</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2072320</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Thu, 02 Jun 2011 10:00:20 GMT</pubDate></item><item><title><![CDATA[Reply to Pi angeben on Thu, 02 Jun 2011 09:59:35 GMT]]></title><description><![CDATA[<p>Ich bevorzuge</p>
<pre><code class="language-cpp">const int pi = 3;
</code></pre>
<p>...mal im Ernst: Warum nicht einfach die Konstante eintragen? Pi wird sich ja niemals verändern...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2072321</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2072321</guid><dc:creator><![CDATA[theliquidwave]]></dc:creator><pubDate>Thu, 02 Jun 2011 09:59:35 GMT</pubDate></item><item><title><![CDATA[Reply to Pi angeben on Thu, 02 Jun 2011 10:25:28 GMT]]></title><description><![CDATA[<p>Man kann das auch zur Compilezeit nähern - jedenfalls, wenn double einem reicht. Long double ist auf den letzten Nachkommastellen schwieriger.</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;
#include &lt;iomanip&gt;
#include &lt;cmath&gt;

template&lt;int k&gt; struct bbp_data {
  static long double const p = 16.0 * bbp_data&lt;k - 1&gt;::p;
  static long double const val
  = bbp_data&lt;k - 1&gt;::val +
    (1.0 / 16.0 / bbp_data&lt;k - 1&gt;::p) * (4.0 / (8 * k + 1) - 
                                         2.0 / (8 * k + 4) -
                                         1.0 / (8 * k + 5) - 
                                         1.0 / (8 * k + 6));
};

template&lt;&gt; struct bbp_data&lt;-1&gt; {
  static long double const p   = 1.0 / 16.0;
  static long double const val = 0.0;
};

int main() {
  double const pi = bbp_data&lt;20&gt;::val; // 13 reicht bei mir, aber etwas Luft kann nicht schaden.

  std::cout &lt;&lt; std::setprecision(20)
            &lt;&lt; pi   &lt;&lt; std::endl
            &lt;&lt; M_PI &lt;&lt; std::endl;
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2072333</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2072333</guid><dc:creator><![CDATA[seldon]]></dc:creator><pubDate>Thu, 02 Jun 2011 10:25:28 GMT</pubDate></item><item><title><![CDATA[Reply to Pi angeben on Thu, 02 Jun 2011 10:27:32 GMT]]></title><description><![CDATA[<p>Was ein Blödsinn <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f44e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--thumbs_down"
      title=":-1:"
      alt="👎"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/2072336</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2072336</guid><dc:creator><![CDATA[Meta-Pi]]></dc:creator><pubDate>Thu, 02 Jun 2011 10:27:32 GMT</pubDate></item><item><title><![CDATA[Reply to Pi angeben on Thu, 02 Jun 2011 11:02:46 GMT]]></title><description><![CDATA[<p>@ seldon<br />
Ist wohl ziemlich sinnlos. Man muss es nicht mehr selber rechnen wenn es schon berechnet wurde (und das auf ziemlich viele Stellen genau ^^). Da PI sich nicht ändert kann man das ruhig hard coden <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f609.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--winking_face"
      title=";)"
      alt="😉"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/2072351</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2072351</guid><dc:creator><![CDATA[icarus2]]></dc:creator><pubDate>Thu, 02 Jun 2011 11:02:46 GMT</pubDate></item></channel></rss>