<?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[Nachkommastellen]]></title><description><![CDATA[<p>Hallo, Ich wollte mit folgender Methode feststellen, wieviele Nachkommastellen eine Zahl hat und dementsprechend runden:</p>
<pre><code class="language-cpp">CString Test::Nachkomma(double zahl)
{
	CString stringZahl;

	double zahlA=(zahl-(int)zahl)*10;
	int zahlB=(int)zahlA;

	if(zahl-(int)zahl==0)
	    stringZahl.Format(&quot;%.0f&quot;, zahl);
	else if(zahlB==zahlA)
	    stringZahl.Format(&quot;%.1f&quot;, zahl);
	else 
	    stringZahl.Format(&quot;%.2f&quot;, zahl);

	return stringZahl;
}
</code></pre>
<p>Jetzt macht mir aber der Typecast am Anfang probleme: wenn ich als Zahl z.B. 12.2 vorgebe, erhalte ich für zahlA also 2,0. Wenn ich das dann in int caste, erhält zahlB plötzlich die 1!!!! Warum denn bitte das??! Die einzige Erklärung die ich hätte wär, weil 2,0 eigentlich schon int ist. Ich benötige aber den realen Wert in zahlB, weil sonst das ganze ja nicht funktioniert. Oder kennt jemand ne andere Möglichkeit, eine Zahl auf Nachkommastellen zu prüfen?!</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/62683/nachkommastellen</link><generator>RSS for Node</generator><lastBuildDate>Thu, 04 Jun 2026 03:51:49 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/62683.rss" rel="self" type="application/rss+xml"/><pubDate>Mon, 26 Jan 2004 09:24:19 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Nachkommastellen on Mon, 26 Jan 2004 09:24:19 GMT]]></title><description><![CDATA[<p>Hallo, Ich wollte mit folgender Methode feststellen, wieviele Nachkommastellen eine Zahl hat und dementsprechend runden:</p>
<pre><code class="language-cpp">CString Test::Nachkomma(double zahl)
{
	CString stringZahl;

	double zahlA=(zahl-(int)zahl)*10;
	int zahlB=(int)zahlA;

	if(zahl-(int)zahl==0)
	    stringZahl.Format(&quot;%.0f&quot;, zahl);
	else if(zahlB==zahlA)
	    stringZahl.Format(&quot;%.1f&quot;, zahl);
	else 
	    stringZahl.Format(&quot;%.2f&quot;, zahl);

	return stringZahl;
}
</code></pre>
<p>Jetzt macht mir aber der Typecast am Anfang probleme: wenn ich als Zahl z.B. 12.2 vorgebe, erhalte ich für zahlA also 2,0. Wenn ich das dann in int caste, erhält zahlB plötzlich die 1!!!! Warum denn bitte das??! Die einzige Erklärung die ich hätte wär, weil 2,0 eigentlich schon int ist. Ich benötige aber den realen Wert in zahlB, weil sonst das ganze ja nicht funktioniert. Oder kennt jemand ne andere Möglichkeit, eine Zahl auf Nachkommastellen zu prüfen?!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/444076</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/444076</guid><dc:creator><![CDATA[*Christian 0]]></dc:creator><pubDate>Mon, 26 Jan 2004 09:24:19 GMT</pubDate></item><item><title><![CDATA[Reply to Nachkommastellen on Mon, 26 Jan 2004 09:48:21 GMT]]></title><description><![CDATA[<p>Ich check die Funktion irgendwie nicht. Wo steht deine Information, auf wieviele Nachkommastellen du runden willst?<br />
Schreib mal ein (oder mehrere) Beispiel(e), was Du für einen double-Wert rein steckst und was dann als String raus kommen soll.</p>
<p>Gruß,<br />
Phips!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/444085</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/444085</guid><dc:creator><![CDATA[Phips!]]></dc:creator><pubDate>Mon, 26 Jan 2004 09:48:21 GMT</pubDate></item><item><title><![CDATA[Reply to Nachkommastellen on Mon, 26 Jan 2004 09:55:19 GMT]]></title><description><![CDATA[<p>eigentlich ganz einfach, folgendes soll geschehen:<br />
in zahlA werden die Nachkommastellen von der eing. Zahl gespeichert und *10 genommen, also bei 12.2 steht in zahlA 2. Dann soll in zahlB die int gecastete zahlA stehe, in dem Fall also auch 2. Wenn jetzt der int Wert von Zahl gleich Zahl ist, hat sie ja keine Nachkommastelle (int schneidet ab), also wird auf 0 Nachkommastellen gerundet. Wenn jedoch der Wert in zahlA gleich dem in zahlB ist gibt es ja folglich genau eine Nachkommastelle. Inm allen anderen Fällen soll auf 2 gerundet werden. Allerdings macht mir der Typecast probleme: Obwohl in zahlA 2.0 steht erhalte ich in zahlB eine 1!! Gebe ich z. B. 12.34 vor funktioniert es (zahlA=3.4, zahlB=3).</p>
]]></description><link>https://www.c-plusplus.net/forum/post/444088</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/444088</guid><dc:creator><![CDATA[*Christian 0]]></dc:creator><pubDate>Mon, 26 Jan 2004 09:55:19 GMT</pubDate></item><item><title><![CDATA[Reply to Nachkommastellen on Mon, 26 Jan 2004 10:04:50 GMT]]></title><description><![CDATA[<p>Also grundsätzlich wäre ich mit solchen Casts immer sehr vorsichtig, außerdem machen sie (meiner Meinung nach) hier den Code etwas unübersichtlich. Wenn Du bei einem double-Wert die Nachkommastellen abschneiden willst, dann nimm doch lieber die Funktion <strong>floor()</strong> (in &quot;math.h&quot;). Damit sollte es funktionieren.</p>
<p>Gruß,<br />
Phips!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/444099</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/444099</guid><dc:creator><![CDATA[Phips!]]></dc:creator><pubDate>Mon, 26 Jan 2004 10:04:50 GMT</pubDate></item><item><title><![CDATA[Reply to Nachkommastellen on Mon, 26 Jan 2004 10:16:39 GMT]]></title><description><![CDATA[<p>Aber wär die Funktion so nicht viel einfacher?</p>
<pre><code class="language-cpp">CString Test::Nachkomma(double zahl)
{
  CString Ret;
  // Double auf zwei Stellen runden
  Ret.Format(&quot;%.2f&quot;,zahl);
  // Alle Nullen ganz rechts abschneiden
  Ret.TrimRight('0');
  // Eventuell auch noch den Punkt abschneiden
  // Wenn double garkeine Nachkomma-Stellen hat
  Ret.TrimRight('.');
  return Ret;
}
</code></pre>
<p>Gruß,<br />
Phips!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/444105</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/444105</guid><dc:creator><![CDATA[Phips!]]></dc:creator><pubDate>Mon, 26 Jan 2004 10:16:39 GMT</pubDate></item></channel></rss>