<?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[double in 0.8er Schritte runden]]></title><description><![CDATA[<p>Hi!<br />
Ich soll double Werte in 0.8er Schritte runden. Also aus 4.6 würde 4.8 werden, aus 2.6 dann 2.4</p>
<p>Die große Preisfrage, wie stelle ich das am besten an? Mein Ansatz:</p>
<pre><code class="language-cpp">double round(const double&amp; in)
{
   double tmp = in/0.8;
   tmp = abs(tmp); // Vorzeichen entfernen
   tmp = tmp - (int)tmp; // Nur Nachkommastellen werden benötigt

   tmp = tmp*0.8; // Wert der abgezogen/aufaddiert werden muss

   if (in &gt; 0.0)
      tmp = in - tmp;
   else
      tmp = in + tmp;

   return tmp;
}
</code></pre>
<p>Ehrlich gesagt finde ich das nicht nur hässlich, sondern es wird auch nicht unterschieden ob der Wert auf- bzw. abgerundet werden soll (tmp &gt; 0.4 dann auf, andernfalls abrunden). Habt ihr Ideen?</p>
<p>Merci</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/264415/double-in-0-8er-schritte-runden</link><generator>RSS for Node</generator><lastBuildDate>Sat, 05 Sep 2026 00:11:06 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/264415.rss" rel="self" type="application/rss+xml"/><pubDate>Wed, 07 Apr 2010 12:27:45 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to double in 0.8er Schritte runden on Wed, 07 Apr 2010 12:27:45 GMT]]></title><description><![CDATA[<p>Hi!<br />
Ich soll double Werte in 0.8er Schritte runden. Also aus 4.6 würde 4.8 werden, aus 2.6 dann 2.4</p>
<p>Die große Preisfrage, wie stelle ich das am besten an? Mein Ansatz:</p>
<pre><code class="language-cpp">double round(const double&amp; in)
{
   double tmp = in/0.8;
   tmp = abs(tmp); // Vorzeichen entfernen
   tmp = tmp - (int)tmp; // Nur Nachkommastellen werden benötigt

   tmp = tmp*0.8; // Wert der abgezogen/aufaddiert werden muss

   if (in &gt; 0.0)
      tmp = in - tmp;
   else
      tmp = in + tmp;

   return tmp;
}
</code></pre>
<p>Ehrlich gesagt finde ich das nicht nur hässlich, sondern es wird auch nicht unterschieden ob der Wert auf- bzw. abgerundet werden soll (tmp &gt; 0.4 dann auf, andernfalls abrunden). Habt ihr Ideen?</p>
<p>Merci</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1878799</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1878799</guid><dc:creator><![CDATA[HamsterBacke]]></dc:creator><pubDate>Wed, 07 Apr 2010 12:27:45 GMT</pubDate></item><item><title><![CDATA[Reply to double in 0.8er Schritte runden on Wed, 07 Apr 2010 12:34:21 GMT]]></title><description><![CDATA[<p>Was spricht denn gegen so etwas:</p>
<pre><code class="language-cpp">inline long round(double x)
{
  return static_cast&lt;long&gt;((x&lt;0) ? (x-0.5) : (x+0.5));
}

void foo() {
  double x = 3.14159265;
  x = round(x*1.25)*0.8;
  //  ^^^^^^^^^^^^^
  // Eventuell lohnt es sich mit dieser Ganzzahl weiterzuarbeiten
}
</code></pre>
<p>?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1878803</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1878803</guid><dc:creator><![CDATA[krümelkacker]]></dc:creator><pubDate>Wed, 07 Apr 2010 12:34:21 GMT</pubDate></item><item><title><![CDATA[Reply to double in 0.8er Schritte runden on Wed, 07 Apr 2010 13:25:16 GMT]]></title><description><![CDATA[<p>Ja das scheint zu funktionieren!</p>
<p>Danke dir</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1878842</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1878842</guid><dc:creator><![CDATA[HamsterBacke]]></dc:creator><pubDate>Wed, 07 Apr 2010 13:25:16 GMT</pubDate></item></channel></rss>