<?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[Frage zu cout&#x2F;printf]]></title><description><![CDATA[<pre><code>int main()
{
	long long i, j;
	int test = 1;
	long long erg;
	//long long fm;
	for (i = 1;; i++)
	{
		for (j = 1; j &lt;= 20; j++)
		{
			//fm=fmod(i,j);
			if (i % j != 0)
			{
				test=0;
				break;
			}
		}
		if (test == 1)
		{
			printf(&quot;%lld&quot;, i);
			//cout &lt;&lt; i &lt;&lt;endl;
			return 0;
		}
		test = 1;
		//printf(&quot;%d\n&quot;,i);
	}
}
</code></pre>
<p>Warum funktioniert diese Version perfekt (im oberen Beispiel könnte auch double stehen wenn fmod dekommentiert ist)</p>
<p>und diese hier spuckt etwas komplett falsches aus?</p>
<pre><code>int main()
{
	double i, j;
	int test = 1;
	double erg;
	double fm;

	for (i = 1;; i++)
	{
		for (j = 1; j &lt;= 20; j++)
		{
			fm = fmod(i, j);
			if (fm)
			{
				test=0;
				break;
			}
		}
		if (test == 1)
		{
			cout &lt;&lt; i &lt;&lt;endl;
			return 0;
		}
		test = 1;
		//printf(&quot;%d\n&quot;,i);
	}
}
</code></pre>
<p>Edit v. Arcoth: Code in lesbare Formen umgeführt</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/326952/frage-zu-cout-printf</link><generator>RSS for Node</generator><lastBuildDate>Mon, 25 May 2026 02:01:20 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/326952.rss" rel="self" type="application/rss+xml"/><pubDate>Tue, 15 Jul 2014 22:07:00 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Frage zu cout&#x2F;printf on Thu, 17 Jul 2014 08:13:56 GMT]]></title><description><![CDATA[<pre><code>int main()
{
	long long i, j;
	int test = 1;
	long long erg;
	//long long fm;
	for (i = 1;; i++)
	{
		for (j = 1; j &lt;= 20; j++)
		{
			//fm=fmod(i,j);
			if (i % j != 0)
			{
				test=0;
				break;
			}
		}
		if (test == 1)
		{
			printf(&quot;%lld&quot;, i);
			//cout &lt;&lt; i &lt;&lt;endl;
			return 0;
		}
		test = 1;
		//printf(&quot;%d\n&quot;,i);
	}
}
</code></pre>
<p>Warum funktioniert diese Version perfekt (im oberen Beispiel könnte auch double stehen wenn fmod dekommentiert ist)</p>
<p>und diese hier spuckt etwas komplett falsches aus?</p>
<pre><code>int main()
{
	double i, j;
	int test = 1;
	double erg;
	double fm;

	for (i = 1;; i++)
	{
		for (j = 1; j &lt;= 20; j++)
		{
			fm = fmod(i, j);
			if (fm)
			{
				test=0;
				break;
			}
		}
		if (test == 1)
		{
			cout &lt;&lt; i &lt;&lt;endl;
			return 0;
		}
		test = 1;
		//printf(&quot;%d\n&quot;,i);
	}
}
</code></pre>
<p>Edit v. Arcoth: Code in lesbare Formen umgeführt</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2408838</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2408838</guid><dc:creator><![CDATA[uncannysnake]]></dc:creator><pubDate>Thu, 17 Jul 2014 08:13:56 GMT</pubDate></item><item><title><![CDATA[Reply to Frage zu cout&#x2F;printf on Tue, 15 Jul 2014 22:15:27 GMT]]></title><description><![CDATA[<p>Glaubst du das hier ist eine Quizshow und wir raten, was &quot;komplett falsch&quot; bedeutet?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2408839</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2408839</guid><dc:creator><![CDATA[manni66]]></dc:creator><pubDate>Tue, 15 Jul 2014 22:15:27 GMT</pubDate></item><item><title><![CDATA[Reply to Frage zu cout&#x2F;printf on Tue, 15 Jul 2014 22:29:11 GMT]]></title><description><![CDATA[<p>Eine andere Zahl als die richtige<br />
Ganz normale Zahl, ungefähr ein paar tausend von der richtigen entfernt, beide im 200 Millionen Bereich. Weiß sie aber nicht mehr auswendig.</p>
<p>Aber eigentlich wollte ich wissen warum cout so heftig auf das double reagiert</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2408840</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2408840</guid><dc:creator><![CDATA[uncannysnake]]></dc:creator><pubDate>Tue, 15 Jul 2014 22:29:11 GMT</pubDate></item><item><title><![CDATA[Reply to Frage zu cout&#x2F;printf on Wed, 16 Jul 2014 00:31:10 GMT]]></title><description><![CDATA[<p>Du bist immer noch im Quizshowmodus.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2408849</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2408849</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Wed, 16 Jul 2014 00:31:10 GMT</pubDate></item><item><title><![CDATA[Reply to Frage zu cout&#x2F;printf on Wed, 16 Jul 2014 05:49:06 GMT]]></title><description><![CDATA[<p>Bei mir<br />
cout bei double 2.32793e+08<br />
cout bei double mit cout.setf(cout.scientific) 2.327926e+08<br />
printf bei double 232792560.000000<br />
cout/printf bei long long 232792560</p>
<p>Tausende vorbei ist das jetz nicht.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2408858</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2408858</guid><dc:creator><![CDATA[gary1195]]></dc:creator><pubDate>Wed, 16 Jul 2014 05:49:06 GMT</pubDate></item><item><title><![CDATA[Reply to Frage zu cout&#x2F;printf on Wed, 16 Jul 2014 07:06:25 GMT]]></title><description><![CDATA[<p>uncannysnake schrieb:</p>
<blockquote>
<p>Eine andere Zahl als die richtige<br />
Ganz normale Zahl, ungefähr ein paar tausend von der richtigen entfernt, beide im 200 Millionen Bereich. Weiß sie aber nicht mehr auswendig.</p>
<p>Aber eigentlich wollte ich wissen warum cout so heftig auf das double reagiert</p>
</blockquote>
<p>In beiden Fällen wird die gleiche Zahl ausgegeben. Nur bei cout auf 6 Stellen gerundet, da Du bei cout keine weiteren Angaben für die Formatierung gemacht hast. Default ist 6.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2408867</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2408867</guid><dc:creator><![CDATA[Kenner der Ausgabe]]></dc:creator><pubDate>Wed, 16 Jul 2014 07:06:25 GMT</pubDate></item><item><title><![CDATA[Reply to Frage zu cout&#x2F;printf on Wed, 16 Jul 2014 12:06:59 GMT]]></title><description><![CDATA[<p>gary1195 schrieb:</p>
<blockquote>
<p>Bei mir<br />
cout bei double 2.32793e+08<br />
cout bei double mit cout.setf(cout.scientific) 2.327926e+08<br />
printf bei double 232792560.000000<br />
cout/printf bei long long 232792560</p>
<p>Tausende vorbei ist das jetz nicht.</p>
</blockquote>
<p>Ist doch alles korrekt?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2408905</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2408905</guid><dc:creator><![CDATA[oenone]]></dc:creator><pubDate>Wed, 16 Jul 2014 12:06:59 GMT</pubDate></item><item><title><![CDATA[Reply to Frage zu cout&#x2F;printf on Wed, 16 Jul 2014 21:45:09 GMT]]></title><description><![CDATA[<p>ja, warum wird hier gerundet?<br />
sorry, bemerk das jetzt erst wo ich die zahlen nebeneinander sehe</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2409025</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2409025</guid><dc:creator><![CDATA[uncannysnake]]></dc:creator><pubDate>Wed, 16 Jul 2014 21:45:09 GMT</pubDate></item><item><title><![CDATA[Reply to Frage zu cout&#x2F;printf on Wed, 16 Jul 2014 22:28:22 GMT]]></title><description><![CDATA[<p>uncannysnake schrieb:</p>
<blockquote>
<p>ja, warum wird hier gerundet?<br />
sorry, bemerk das jetzt erst wo ich die zahlen nebeneinander sehe</p>
</blockquote>
<p>Kenner der Ausgabe schrieb:</p>
<blockquote>
<p>In beiden Fällen wird die gleiche Zahl ausgegeben. Nur bei cout auf 6 Stellen gerundet, da Du bei cout keine weiteren Angaben für die Formatierung gemacht hast. Default ist 6.</p>
</blockquote>
<p>Und das ist übrigens bei printf und bei den C++-Streams exakt gleich.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2409026</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2409026</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Wed, 16 Jul 2014 22:28:22 GMT</pubDate></item><item><title><![CDATA[Reply to Frage zu cout&#x2F;printf on Thu, 17 Jul 2014 07:58:20 GMT]]></title><description><![CDATA[<p>.. ist zwar OT, aber der obige Algorithmus lässt sich wesentlich beschleunigen:</p>
<pre><code>#include &lt;iostream&gt;
#include &lt;limits&gt;   // numeric_limits

// --   ggt &amp; kgV
int ggT( int a, int b ) // größter gemeinsamer Teiler
{
    return a == 0? b: ggT( b%a, a ); 
}

int kgV( int a, int b ) // kleinstes gemeinsames Vielfaches
{
    const int gt = ggT( a, b );
    return (a/gt) * b;
}

// ... und schon wird es einfach und schnell 
int main() {
    using namespace std;
    int ergebnis = 1;
    for( int i = 1; i &lt;= 20; ++i )
        ergebnis = kgV( i, ergebnis );
    cout.precision( numeric_limits&lt;int&gt;::digits10 ); // damit auch alle Ziffern in der Ausgabe erscheinen
    cout &lt;&lt; ergebnis &lt;&lt; endl;
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2409052</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2409052</guid><dc:creator><![CDATA[Werner Salomon]]></dc:creator><pubDate>Thu, 17 Jul 2014 07:58:20 GMT</pubDate></item><item><title><![CDATA[Reply to Frage zu cout&#x2F;printf on Thu, 17 Jul 2014 09:00:21 GMT]]></title><description><![CDATA[<p>uncannysnake schrieb:</p>
<blockquote>
<p>ja, warum wird hier gerundet?<br />
sorry, bemerk das jetzt erst wo ich die zahlen nebeneinander sehe</p>
</blockquote>
<p>Wieviel Stellen soll es denn standardmäßig ausgeben? Eine? Hundert? Nee, der Standard sieht 6 vor und wenn du die Ausgabe genauer haben willst, musst du das selbst angeben. Du kannst die Zahl sogar mit nur einer Nachkommastelle ausgeben, dann wird auch gerundet.</p>
<pre><code>#include &lt;iostream&gt;
#include &lt;iomanip&gt;
#include &lt;cmath&gt;
#include &lt;limits&gt;
int main()
{
    const long double pi = std::acos(-1.L);
    std::cout &lt;&lt; &quot;default precision (6): &quot; &lt;&lt; pi &lt;&lt; '\n'
              &lt;&lt; &quot;std::precision(10):    &quot; &lt;&lt; std::setprecision(10) &lt;&lt; pi &lt;&lt; '\n'
              &lt;&lt; &quot;max precision:         &quot;
              &lt;&lt; std::setprecision(std::numeric_limits&lt;long double&gt;::digits10)
              &lt;&lt; pi &lt;&lt; '\n';
}
</code></pre>
<p>Oder so ähnlich. Ausgabe:</p>
<pre><code>default precision (6): 3.14159
std::precision(10):    3.141592654
max precision:         3.14159265358979324
</code></pre>
<p>Auch interessant: <code>std::fixed</code> , <code>std::scientific</code> , <code>std::hexfloat</code> , <code>std::defaultfloat</code><br />
Siehe auch:<br />
<a href="http://en.cppreference.com/w/cpp/io/manip/fixed" rel="nofollow">http://en.cppreference.com/w/cpp/io/manip/fixed</a></p>
]]></description><link>https://www.c-plusplus.net/forum/post/2409061</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2409061</guid><dc:creator><![CDATA[oenone]]></dc:creator><pubDate>Thu, 17 Jul 2014 09:00:21 GMT</pubDate></item><item><title><![CDATA[Reply to Frage zu cout&#x2F;printf on Thu, 17 Jul 2014 17:33:07 GMT]]></title><description><![CDATA[<p>Wobei dein Ausdruck &quot;max_precision&quot; hier irreführend ist. Erstens kann die Zahl, die ausgegeben wurde, kann (und wird in vielen Fällen, so wie in diesem Beispiel) in der Regel noch viel mehr Dezimalstellen haben. Zweitens ist digits10 die Anzahl der &quot;sicheren&quot; Dezimalstellen. Diese reicht aber nicht aus, um daraus umgekehrt auf die gespeicherte Zahl zu schließen. Dafür gibt es max_digits10.</p>
<pre><code>3.1415926535897932384626433832795028841971693993751  // Pi, mathematisch, 50 Stellen
3.1415926535897932385128089594061862044327426701784  // Pi aus Programm, 50 Stellen
3.14159265358979324                                  // Pi aus Programm, &quot;max_precision&quot; Stellen
3.14159265358979323851                               // Pi aus Programm, max_digits10 Stellen
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2409143</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2409143</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Thu, 17 Jul 2014 17:33:07 GMT</pubDate></item><item><title><![CDATA[Reply to Frage zu cout&#x2F;printf on Thu, 17 Jul 2014 17:41:36 GMT]]></title><description><![CDATA[<blockquote>
<p>Pi aus Programm, 50 Stellen</p>
</blockquote>
<p><code>2*std::asin(1.L)</code> ?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2409145</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2409145</guid><dc:creator><![CDATA[Columbo]]></dc:creator><pubDate>Thu, 17 Jul 2014 17:41:36 GMT</pubDate></item><item><title><![CDATA[Reply to Frage zu cout&#x2F;printf on Thu, 17 Jul 2014 18:09:26 GMT]]></title><description><![CDATA[<p>Arcoth schrieb:</p>
<blockquote>
<blockquote>
<p>Pi aus Programm, 50 Stellen</p>
</blockquote>
<p><code>2*std::asin(1.L)</code> ?</p>
</blockquote>
<p>Nein, das, was oenone geschrieben hat, übernommen. Also <code>std::acos(-1.L);</code></p>
]]></description><link>https://www.c-plusplus.net/forum/post/2409149</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2409149</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Thu, 17 Jul 2014 18:09:26 GMT</pubDate></item></channel></rss>