<?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[Dezimal Ziffern Anzahl herausbekommen [Performatanteste Methode]]]></title><description><![CDATA[<p>Hmm also hab bsw ne Zahl 10123 ... dann soll die Funktion mir 5 zurück geben ... müsste ja eigentlich noch ne bessere Version als folgendes geben:</p>
<pre><code class="language-cpp">template &lt;class t&gt;
std::size_t digit_count(const t&amp; num)
{
	std::ostringstream ss;
	ss &lt;&lt; num;
	return (!ss ? 1 : ss.str().length());
}
</code></pre>
<p>... jemand nen Vorschlag?</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/180962/dezimal-ziffern-anzahl-herausbekommen-performatanteste-methode</link><generator>RSS for Node</generator><lastBuildDate>Tue, 22 Sep 2026 01:59:46 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/180962.rss" rel="self" type="application/rss+xml"/><pubDate>Tue, 08 May 2007 15:51:53 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Dezimal Ziffern Anzahl herausbekommen [Performatanteste Methode] on Tue, 08 May 2007 16:06:57 GMT]]></title><description><![CDATA[<p>Hmm also hab bsw ne Zahl 10123 ... dann soll die Funktion mir 5 zurück geben ... müsste ja eigentlich noch ne bessere Version als folgendes geben:</p>
<pre><code class="language-cpp">template &lt;class t&gt;
std::size_t digit_count(const t&amp; num)
{
	std::ostringstream ss;
	ss &lt;&lt; num;
	return (!ss ? 1 : ss.str().length());
}
</code></pre>
<p>... jemand nen Vorschlag?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1281010</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1281010</guid><dc:creator><![CDATA[*D*Evil]]></dc:creator><pubDate>Tue, 08 May 2007 16:06:57 GMT</pubDate></item><item><title><![CDATA[Reply to Dezimal Ziffern Anzahl herausbekommen [Performatanteste Methode] on Tue, 08 May 2007 15:54:41 GMT]]></title><description><![CDATA[<p>Teile ganzzahlig durch 10, bis 0 rauskommt.<br />
Oder berechne direkt den 10er-Logarithmus, gerundet natürlich.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1281016</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1281016</guid><dc:creator><![CDATA[Supertramp]]></dc:creator><pubDate>Tue, 08 May 2007 15:54:41 GMT</pubDate></item><item><title><![CDATA[Reply to Dezimal Ziffern Anzahl herausbekommen [Performatanteste Methode] on Tue, 08 May 2007 15:56:11 GMT]]></title><description><![CDATA[<p>Ist die Frage ob das schneller ist ...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1281020</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1281020</guid><dc:creator><![CDATA[*D*Evil]]></dc:creator><pubDate>Tue, 08 May 2007 15:56:11 GMT</pubDate></item><item><title><![CDATA[Reply to Dezimal Ziffern Anzahl herausbekommen [Performatanteste Methode] on Tue, 08 May 2007 16:02:06 GMT]]></title><description><![CDATA[<pre><code class="language-cpp">std::size_t digit_count(const std::size_t&amp; num)
{
	if (num == 0)
		return 1;

	std::size_t num_tmp = num;
	std::size_t dig = 0;
	for (; num_tmp &gt; 0; ++dig, num_tmp /= 10);
	return dig;
}
</code></pre>
<p>geht ja auch ... aber die Frage ist ganz einfach was das schnellste ist!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1281024</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1281024</guid><dc:creator><![CDATA[*D*Evil]]></dc:creator><pubDate>Tue, 08 May 2007 16:02:06 GMT</pubDate></item><item><title><![CDATA[Reply to Dezimal Ziffern Anzahl herausbekommen [Performatanteste Methode] on Tue, 08 May 2007 16:39:10 GMT]]></title><description><![CDATA[<p>(D)Evil schrieb:</p>
<blockquote>
<p>[…] geht ja auch ... aber die Frage ist ganz einfach was das schnellste ist!</p>
</blockquote>
<p>Teste doch. <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>
<p>Na ja, ich würde aber trotzdem sagen, dass die arithmetische Variante schneller ist, denn bei der anderen fällt die ganze Stream-Speicherverwaltung an.</p>
<p>/EDIT: PS: Ich hätt's natürlich rekursiv implementiert. :-p</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1281042</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1281042</guid><dc:creator><![CDATA[Konrad Rudolph]]></dc:creator><pubDate>Tue, 08 May 2007 16:39:10 GMT</pubDate></item><item><title><![CDATA[Reply to Dezimal Ziffern Anzahl herausbekommen [Performatanteste Methode] on Tue, 08 May 2007 22:15:35 GMT]]></title><description><![CDATA[<p>(D)Evil schrieb:</p>
<blockquote>
<p>... aber die Frage ist ganz einfach was das schnellste ist!</p>
</blockquote>
<p>warum habt Ihr's eigentlich alle so eilig? <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>
<p>Wenn man sich auf positive int-Variablen beschränkt (bei 4Byte pro int) vielleicht diese furchtbar unflexible Variante:</p>
<pre><code class="language-cpp">std::size_t digit_count( int x )
{
    if( x &lt; 100000 )
    {
        if( x &lt; 100 )
            return x &lt; 10? 1: 2;
        else
            return x &lt; 10000? ( x &lt; 1000? 3: 4 ): 5;
    }
    else
    {
        if( x &lt; 10000000 )
            return x &lt; 1000000? 6: 7;
        else
            return x &lt; 100000000? 8 : ( x &lt; 1000000000? 9: 10 );
    }
}
</code></pre>
<p>Gruß<br />
Werner</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1281250</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1281250</guid><dc:creator><![CDATA[Werner Salomon]]></dc:creator><pubDate>Tue, 08 May 2007 22:15:35 GMT</pubDate></item><item><title><![CDATA[Reply to Dezimal Ziffern Anzahl herausbekommen [Performatanteste Methode] on Wed, 09 May 2007 06:56:23 GMT]]></title><description><![CDATA[<p>Keine Ahnung, wie das im Vergleich abschneidet, aber ich hätte da auch noch einen Ansatz :D:</p>
<pre><code class="language-cpp">size_t digit_count(int x)
{
  int vals[] = {10,100,1000,10000/*...*/},v_len=sizeof(vals)/sizeof(int);
  int* pos = upper_bound(vals,vals+vlen,x);
  return pos-vals+1;
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1281314</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1281314</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Wed, 09 May 2007 06:56:23 GMT</pubDate></item><item><title><![CDATA[Reply to Dezimal Ziffern Anzahl herausbekommen [Performatanteste Methode] on Wed, 09 May 2007 12:34:42 GMT]]></title><description><![CDATA[<p>Werner Salomon schrieb:</p>
<blockquote>
<p>Wenn man sich auf positive int-Variablen beschränkt</p>
</blockquote>
<p><code>x = abs(x);</code> zu unperformant?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1281569</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1281569</guid><dc:creator><![CDATA[finix]]></dc:creator><pubDate>Wed, 09 May 2007 12:34:42 GMT</pubDate></item></channel></rss>