<?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[&amp;quot;double&amp;quot; wird bei &amp;quot;cout&amp;quot; abgeschnitten]]></title><description><![CDATA[<p>Hallo, ich versuche mittels C++ mit einem Algorithmus einen Grenzwert zu finden und so versuche ich so viele wie möglich Nachkommastellen herausfinden, nur bei der Ausgabe wird stark abgeschnitten. Hier mal der kurze Quelltext:</p>
<pre><code class="language-cpp">double total = (sqrt(3.0)/4.0);
	double lastTotal = total;

	int i = 1;
	while(true)
	{
		total += (
			3.0
			*pow(4.0, (i-1)) //4^(i-1)
			*(sqrt(3.0)/4) //(Wurzel 3)/4
			*pow((1.0/3.0), (2*i)) //(1/3)^(2*i)
		);

		std::cout &lt;&lt; (i &lt; 10 ? &quot; &quot; : &quot;&quot;) &lt;&lt; &quot;A&quot; &lt;&lt; i &lt;&lt; &quot; = &quot; &lt;&lt; total &lt;&lt; &quot;\n&quot;;

		if(total == lastTotal)
			break;
		else
		{
			lastTotal = total;
			i++;
		}
	}
</code></pre>
<p>So und das ist die Ausgabe:</p>
<blockquote>
<p>A1 = 0.57735<br />
A2 = 0.6415<br />
A3 = 0.670011<br />
A4 = 0.682683<br />
A5 = 0.688315<br />
A6 = 0.690818<br />
A7 = 0.69193<br />
A8 = 0.692425<br />
A9 = 0.692645<br />
A10 = 0.692742<br />
A11 = 0.692786<br />
A12 = 0.692805<br />
A13 = 0.692813<br />
A14 = 0.692817<br />
A15 = 0.692819<br />
A16 = 0.69282<br />
A17 = 0.69282<br />
A18 = 0.69282<br />
[...]<br />
A43 = 0.69282<br />
A44 = 0.69282<br />
A45 = 0.69282</p>
</blockquote>
<p>So und eigentlich müsste er doch schon bei A17 aufhören, weil ich doch die Abfrage &quot;if(total == lastTotal) break;&quot; habe. Also ist für mich vorerst die einzige Erklärung, dass es weiterläuft, weil die Konsolenausgabe abgeschnitten wird. Kann man das irgendwie unterbinden bzw. meinen Code modifizieren?</p>
<p>Danke schon einmal im voraus!</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/148901/quot-double-quot-wird-bei-quot-cout-quot-abgeschnitten</link><generator>RSS for Node</generator><lastBuildDate>Sat, 05 Sep 2026 01:42:52 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/148901.rss" rel="self" type="application/rss+xml"/><pubDate>Wed, 31 May 2006 14:27:29 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to &amp;quot;double&amp;quot; wird bei &amp;quot;cout&amp;quot; abgeschnitten on Wed, 31 May 2006 14:27:29 GMT]]></title><description><![CDATA[<p>Hallo, ich versuche mittels C++ mit einem Algorithmus einen Grenzwert zu finden und so versuche ich so viele wie möglich Nachkommastellen herausfinden, nur bei der Ausgabe wird stark abgeschnitten. Hier mal der kurze Quelltext:</p>
<pre><code class="language-cpp">double total = (sqrt(3.0)/4.0);
	double lastTotal = total;

	int i = 1;
	while(true)
	{
		total += (
			3.0
			*pow(4.0, (i-1)) //4^(i-1)
			*(sqrt(3.0)/4) //(Wurzel 3)/4
			*pow((1.0/3.0), (2*i)) //(1/3)^(2*i)
		);

		std::cout &lt;&lt; (i &lt; 10 ? &quot; &quot; : &quot;&quot;) &lt;&lt; &quot;A&quot; &lt;&lt; i &lt;&lt; &quot; = &quot; &lt;&lt; total &lt;&lt; &quot;\n&quot;;

		if(total == lastTotal)
			break;
		else
		{
			lastTotal = total;
			i++;
		}
	}
</code></pre>
<p>So und das ist die Ausgabe:</p>
<blockquote>
<p>A1 = 0.57735<br />
A2 = 0.6415<br />
A3 = 0.670011<br />
A4 = 0.682683<br />
A5 = 0.688315<br />
A6 = 0.690818<br />
A7 = 0.69193<br />
A8 = 0.692425<br />
A9 = 0.692645<br />
A10 = 0.692742<br />
A11 = 0.692786<br />
A12 = 0.692805<br />
A13 = 0.692813<br />
A14 = 0.692817<br />
A15 = 0.692819<br />
A16 = 0.69282<br />
A17 = 0.69282<br />
A18 = 0.69282<br />
[...]<br />
A43 = 0.69282<br />
A44 = 0.69282<br />
A45 = 0.69282</p>
</blockquote>
<p>So und eigentlich müsste er doch schon bei A17 aufhören, weil ich doch die Abfrage &quot;if(total == lastTotal) break;&quot; habe. Also ist für mich vorerst die einzige Erklärung, dass es weiterläuft, weil die Konsolenausgabe abgeschnitten wird. Kann man das irgendwie unterbinden bzw. meinen Code modifizieren?</p>
<p>Danke schon einmal im voraus!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1068861</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1068861</guid><dc:creator><![CDATA[kralleDel]]></dc:creator><pubDate>Wed, 31 May 2006 14:27:29 GMT</pubDate></item><item><title><![CDATA[Reply to &amp;quot;double&amp;quot; wird bei &amp;quot;cout&amp;quot; abgeschnitten on Wed, 31 May 2006 15:31:59 GMT]]></title><description><![CDATA[<p>Hallo</p>
<p>es ist niemals gut zwei float-Werte auf gleichheit vergleichen zu wollen. Denn selbst Formal gleiche Werte können durch Rundungsfehler immer noc heinen Tick unterschiedlich sein. Du must also immer auf einen Mindest-bereich vergleichen :</p>
<pre><code class="language-cpp">if(fabs(total -lastTotal) &lt; 0.00001)
</code></pre>
<p>bis bald<br />
akari</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1068911</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1068911</guid><dc:creator><![CDATA[akari]]></dc:creator><pubDate>Wed, 31 May 2006 15:31:59 GMT</pubDate></item><item><title><![CDATA[Reply to &amp;quot;double&amp;quot; wird bei &amp;quot;cout&amp;quot; abgeschnitten on Wed, 31 May 2006 18:19:11 GMT]]></title><description><![CDATA[<p>Hallo,<br />
danke für den Tip. Allerdings weiss ich jetzt nicht wie ich die kompletten Nachkommastellen auf der Konsole wirklich ausgeben kann?<br />
Danke!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1069043</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1069043</guid><dc:creator><![CDATA[kralleDel]]></dc:creator><pubDate>Wed, 31 May 2006 18:19:11 GMT</pubDate></item><item><title><![CDATA[Reply to &amp;quot;double&amp;quot; wird bei &amp;quot;cout&amp;quot; abgeschnitten on Wed, 31 May 2006 18:27:02 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>kralleDel schrieb:</p>
<blockquote>
<p>danke für den Tip. Allerdings weiss ich jetzt nicht wie ich die kompletten Nachkommastellen auf der Konsole wirklich ausgeben kann?<br />
Danke!</p>
</blockquote>
<p>Für die I/O-Stream-Klassen gibt es einige Manipulatoren, mit denen du das Verhalten der Ein/Ausgabe anpassen kannst. Für dich sind die Manipulatoren setprecision(x) (Stellt die Anzahl der Stellen fest) und fixed (keine wissenschaftlicher Schreibweise) sicherlich interessant.</p>
<p>Bsp:</p>
<pre><code class="language-cpp">double x = 9.99, y = 9.999999999
std::cout &lt;&lt; setprecision(10) &lt;&lt; fixed &lt;&lt; x + y &lt;&lt; std::endl; // Ausgabe als Festpunktzahl mit 10 Nachkommastellen.
</code></pre>
<p>Gruß, Caipi</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1069048</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1069048</guid><dc:creator><![CDATA[Caipi]]></dc:creator><pubDate>Wed, 31 May 2006 18:27:02 GMT</pubDate></item><item><title><![CDATA[Reply to &amp;quot;double&amp;quot; wird bei &amp;quot;cout&amp;quot; abgeschnitten on Wed, 31 May 2006 18:29:25 GMT]]></title><description><![CDATA[<p>Mit <a href="http://www.cplusplus.com/ref/iostream/iomanip/setprecision.html" rel="nofollow">setprecision</a> aus dem iomanip Header (bzw. der precision-Methode des cout Objektes) kannst du die Anzahl der Dezimalstellen hinter dem Komma festlegen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1069051</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1069051</guid><dc:creator><![CDATA[.filmor]]></dc:creator><pubDate>Wed, 31 May 2006 18:29:25 GMT</pubDate></item></channel></rss>