<?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[Größen mit Maßeinheiten - wie speichern?]]></title><description><![CDATA[<p>Hallo,</p>
<p>möchte man eine Klasse schreiben, die für das Speichern einer physikalischen Größe mit Maßeinheit verantwortlich ist, so stellt man sich die Frage, in welcher Maßeinheit diese gespeichert werden soll. Ein Dilemma beim genaueren Hinschauen. Ich möchte eine Klasse für Winkel schreiben, so dass man Grad, Bogenmaß und Zeitmaß speichern kann. Ideen / Ansätze:</p>
<p>1. Für jede Maßeinheit ein eigenes Klassentemplate.<br />
Nachteile:<br />
- Viel Boilerplatecode, damit man zwischen den Einheiten hin- und herkonvertieren kann<br />
- Redundant da man in jeder Konvertierungsfunktion Faktoren einfügt.</p>
<p>2. Ein Klassentemplate für Bogenmaß, die anderen Einheiten haben keine Klasse, können aber in / von Bogenmaß konvertiert werden.<br />
Nachteile:<br />
- Sind viele Werte als z.B. Grad vorhanden und werden diese auch weiterhin als Grad benötigt, so ist diese Klasse nicht brauchbar wegen den vielen Konvertierungen - durch die sowohl Geschwindigkeit als unter Umständen auch die Genauigkeit leidet -, womit die damit verbundene Funktionalität entfällt.</p>
<p>3. Ein Klassentemplate für alle Winkeleinheiten, intern wird mit einer Enumeration gespeichert, welche Einheit aktuell in Benutzung ist.<br />
Nachteile:<br />
- Speicheroverhead für eine jede Instanz, auch wenn man diese zusätzliche Funktionalität nicht braucht.</p>
<p>Gibt es bessere Lösungen?</p>
<p>MfG</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/327202/größen-mit-maßeinheiten-wie-speichern</link><generator>RSS for Node</generator><lastBuildDate>Thu, 09 Jul 2026 13:10:19 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/327202.rss" rel="self" type="application/rss+xml"/><pubDate>Mon, 28 Jul 2014 18:50:25 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Größen mit Maßeinheiten - wie speichern? on Mon, 28 Jul 2014 18:50:25 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>möchte man eine Klasse schreiben, die für das Speichern einer physikalischen Größe mit Maßeinheit verantwortlich ist, so stellt man sich die Frage, in welcher Maßeinheit diese gespeichert werden soll. Ein Dilemma beim genaueren Hinschauen. Ich möchte eine Klasse für Winkel schreiben, so dass man Grad, Bogenmaß und Zeitmaß speichern kann. Ideen / Ansätze:</p>
<p>1. Für jede Maßeinheit ein eigenes Klassentemplate.<br />
Nachteile:<br />
- Viel Boilerplatecode, damit man zwischen den Einheiten hin- und herkonvertieren kann<br />
- Redundant da man in jeder Konvertierungsfunktion Faktoren einfügt.</p>
<p>2. Ein Klassentemplate für Bogenmaß, die anderen Einheiten haben keine Klasse, können aber in / von Bogenmaß konvertiert werden.<br />
Nachteile:<br />
- Sind viele Werte als z.B. Grad vorhanden und werden diese auch weiterhin als Grad benötigt, so ist diese Klasse nicht brauchbar wegen den vielen Konvertierungen - durch die sowohl Geschwindigkeit als unter Umständen auch die Genauigkeit leidet -, womit die damit verbundene Funktionalität entfällt.</p>
<p>3. Ein Klassentemplate für alle Winkeleinheiten, intern wird mit einer Enumeration gespeichert, welche Einheit aktuell in Benutzung ist.<br />
Nachteile:<br />
- Speicheroverhead für eine jede Instanz, auch wenn man diese zusätzliche Funktionalität nicht braucht.</p>
<p>Gibt es bessere Lösungen?</p>
<p>MfG</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2410894</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2410894</guid><dc:creator><![CDATA[Taniyama-Shimura]]></dc:creator><pubDate>Mon, 28 Jul 2014 18:50:25 GMT</pubDate></item><item><title><![CDATA[Reply to Größen mit Maßeinheiten - wie speichern? on Mon, 28 Jul 2014 18:56:34 GMT]]></title><description><![CDATA[<p>Taniyama-Shimura schrieb:</p>
<blockquote>
<p>Gibt es bessere Lösungen?</p>
</blockquote>
<p>Nur mit einer der Einheiten rechnen. Am besten Bogenmass only.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2410895</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2410895</guid><dc:creator><![CDATA[#pragma tist]]></dc:creator><pubDate>Mon, 28 Jul 2014 18:56:34 GMT</pubDate></item><item><title><![CDATA[Reply to Größen mit Maßeinheiten - wie speichern? on Mon, 28 Jul 2014 19:26:37 GMT]]></title><description><![CDATA[<p>Ich finde Nummer 2 am besten. Für trigonometrische Funktionen brauchst du eh das Bogenmaß und mit Gettern und Settern für Grad, Bogenmaß und Zeitmaß kannst du die Einheitenumrechnung wegkapseln und gegebenenfalls die interne Einheit wechseln wenn du wirklich willst/musst.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2410904</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2410904</guid><dc:creator><![CDATA[nwp3]]></dc:creator><pubDate>Mon, 28 Jul 2014 19:26:37 GMT</pubDate></item><item><title><![CDATA[Reply to Größen mit Maßeinheiten - wie speichern? on Tue, 29 Jul 2014 00:49:57 GMT]]></title><description><![CDATA[<p>Ich finde nicht dass die Antwort hier so klar (2) ist.</p>
<p>Die Sache mit den Winkeln ist äusserst doof.<br />
z.B. schonmal deswegen weil die Periode von <code>sin</code> / <code>cos</code> 2 Pi ist, aber 2 Pi blöderweise nicht als <code>float</code> / <code>double</code> darstellbar ist.<br />
Wenn man exakte Ergebnisse braucht nervt das.</p>
<p>Bei 3600000090 Grad ist klar dass der Sinus 1 ist. Bei Modulo 360 kommt exakt 90,0 raus, und dass der Sinus davon exakt 1,0 ist wissen wir.<br />
Bei 20000000,5*Pi Radianten modulo 2 Pi kommt dagegen bloss was raus was relativ nahe an 0,5 Pi liegt -- allerdings nicht so nahe an 0,5 Pi wie es mit der verwendeten Gleitkommadarstellung sein könnte. =&gt; <code>sin()</code> davon wird nicht exakt 1,0 sein. =&gt; Doof.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2410938</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2410938</guid><dc:creator><![CDATA[hustbaer]]></dc:creator><pubDate>Tue, 29 Jul 2014 00:49:57 GMT</pubDate></item><item><title><![CDATA[Reply to Größen mit Maßeinheiten - wie speichern? on Tue, 29 Jul 2014 07:52:31 GMT]]></title><description><![CDATA[<blockquote>
<p>20000000,5*Pi Radianten</p>
</blockquote>
<p>Speichern wir Radians nicht direkt als Vielfaches von Pi? Warum also den Faktor noch drinbehalten? Man kann das *Pi doch implizit machen.</p>
<p>Ich würde zu 1 tendieren, und dann einfach kontextabhängig das sinnvollste benutzen. Wenn man sehr viel mit Grad rechnet, so sollte man auch für diesen Fall Grad abspeichern.</p>
<p>Und nicht UDLs vergessen!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2410962</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2410962</guid><dc:creator><![CDATA[Columbo]]></dc:creator><pubDate>Tue, 29 Jul 2014 07:52:31 GMT</pubDate></item><item><title><![CDATA[Reply to Größen mit Maßeinheiten - wie speichern? on Tue, 29 Jul 2014 08:02:31 GMT]]></title><description><![CDATA[<p>Arcoth schrieb:</p>
<blockquote>
<p>Wenn man sehr viel mit Grad rechnet, so sollte man auch für diesen Fall Grad abspeichern.</p>
</blockquote>
<p>Hä?</p>
<p>ps: Seltsam, daß keiner verlangte, man müsse es unbedingt ähnlich wie im C++-Standard machen.<br />
<a href="http://en.cppreference.com/w/cpp/chrono/duration" rel="nofollow">http://en.cppreference.com/w/cpp/chrono/duration</a></p>
<pre><code>//an dem tag haben sie wieder was geraucht
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2410964</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2410964</guid><dc:creator><![CDATA[volkard]]></dc:creator><pubDate>Tue, 29 Jul 2014 08:02:31 GMT</pubDate></item><item><title><![CDATA[Reply to Größen mit Maßeinheiten - wie speichern? on Tue, 29 Jul 2014 08:02:37 GMT]]></title><description><![CDATA[<p>volkard schrieb:</p>
<blockquote>
<p>Arcoth schrieb:</p>
<blockquote>
<p>Wenn man sehr viel mit Grad rechnet, so sollte man auch für diesen Fall Grad abspeichern.</p>
</blockquote>
<p>Hä?</p>
</blockquote>
<p>... wenn du sehr oft - nach Berechnungen - Funktionen aufrufst, die einen double mit der Gradzahl erwarten (könnten aus irgendeiner API stammen), wirst du natürlich deine Berechnungen, falls sinnvoll, vorzugsweise in Grad durchführen und speichern damit du nicht bei jedem Aufruf ins Bogenmaß konvertieren musst.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2410966</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2410966</guid><dc:creator><![CDATA[Columbo]]></dc:creator><pubDate>Tue, 29 Jul 2014 08:02:37 GMT</pubDate></item><item><title><![CDATA[Reply to Größen mit Maßeinheiten - wie speichern? on Tue, 29 Jul 2014 08:03:41 GMT]]></title><description><![CDATA[<p>Arcoth schrieb:</p>
<blockquote>
<p>... wenn du sehr oft - nach Berechnungen - Funktionen aufrufst, die einen double mit der Gradzahl erwarten (könnten aus irgendeiner API stammen),</p>
</blockquote>
<p>Ahh.<br />
Ok, kann nicht vorkommen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2410967</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2410967</guid><dc:creator><![CDATA[volkard]]></dc:creator><pubDate>Tue, 29 Jul 2014 08:03:41 GMT</pubDate></item><item><title><![CDATA[Reply to Größen mit Maßeinheiten - wie speichern? on Tue, 29 Jul 2014 08:08:00 GMT]]></title><description><![CDATA[<blockquote>
<p>Ahh.<br />
Ok, kann nicht vorkommen.</p>
</blockquote>
<p>Wie man merkt bin ich ein Greenhorn, danke für die Aufklärung. <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f576.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--sunglasses"
      title=":sunglasses:"
      alt="🕶"
    /></p>
<blockquote>
<p>Seltsam, daß keiner verlangte, man müsse es unbedingt ähnlich wie im C++-Standard machen.</p>
</blockquote>
<p>Willste für jede Maßeinheit eine Spezialisierung haben? Und Konstanten (zur Konvertierung etc.) als Template-Parameter nehmen?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2410969</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2410969</guid><dc:creator><![CDATA[Columbo]]></dc:creator><pubDate>Tue, 29 Jul 2014 08:08:00 GMT</pubDate></item><item><title><![CDATA[Reply to Größen mit Maßeinheiten - wie speichern? on Tue, 29 Jul 2014 08:55:01 GMT]]></title><description><![CDATA[<p>hustbaer schrieb:</p>
<blockquote>
<p>allerdings nicht so nahe an 0,5 Pi wie es mit der verwendeten Gleitkommadarstellung sein könnte. =&gt; <code>sin()</code> davon wird nicht exakt 1,0 sein. =&gt; Doof.</p>
</blockquote>
<p>Ähm.<br />
Schon, wenn man eine Zahl durch 3 teilt und danach das Dreifache nimmt, hat man einen Rechenfehler. Mit der Gradrechnung kommste wohl auf ein geschlossenes Dreieck, Viereck, Fünfeck, Sechseck, aber das Siebeneck ist schon offen. Und auch nur FALLS jemand die glatten Sonderfälle in die sin()-Funktion einprogrammiert. Na, besser in double auch, damit sqrt(2)*sqrt(.5)==1. sin(30d) solls nicht besser haben als sin(60d), oder?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2410975</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2410975</guid><dc:creator><![CDATA[volkard]]></dc:creator><pubDate>Tue, 29 Jul 2014 08:55:01 GMT</pubDate></item><item><title><![CDATA[Reply to Größen mit Maßeinheiten - wie speichern? on Tue, 29 Jul 2014 09:04:27 GMT]]></title><description><![CDATA[<p>Arcoth schrieb:</p>
<blockquote>
<p>Und nicht UDLs vergessen!</p>
</blockquote>
<p>Ja, die sind für die Lesbarkeit ganz wichtig. <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f921.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--clown_face"
      title=":clown:"
      alt="🤡"
    /><br />
d für grad, ist klar. g für neugrad und r für normal. WIe im Taschenrechner üblich.<br />
außerdem universell m für milli und k für kilo, aus der Zeit-Lib noch s für Sekunde und m für minute.<br />
1m ist eine Minute.<br />
1mm ist eine Milliminute (ungefähr ein clocktick in DOS). Ach nee, das geht ja so nicht.<br />
Man muss UDLs aneinanderhängen können. Das ist der einzige Ausweg, um nicht in eine kombinatoreische Explosion zu geraten.<br />
1m m ist eine Milliminute.<br />
1k g sind 1000 Grad.<br />
Dann wünschen die Benutzer aber auch, mehr Leerzeichen verwenden zu dürfen. Gibt ja so kranke Leute, die keine zwei Zeilen Code hinkriegen ohne eine Leerzeile dazwischen und keinen Ausdruck ohne Leerzeichen um alle Operatoren).<br />
1 m m ist eine Milliminute.<br />
1 k g sind 1000 Grad.<br />
Und Variablen!<br />
x m m steht einfach für Minute(Milli(x)).<br />
Und weils zu kacke aussieht, muss man auch die Leerzeichen weglassen können. Am besten mit Vorrangregelung für übliche Zusammensetzungen.<br />
1m m oder 1 m m oder (1m)m ist eine Milliminute, aber 1mm oder 1 mm ist ein Millimeter. Siehe auch whitespace overloading.</p>
<p>Übung: Wie sieht die Einheit des Benzinverbrauchs von Autos aus, wenn man nur Einheitenvorsätze wie milli und SI-Basis-Einheiten erlaubt und vielleicht noch ein i für &quot;hoch minus 1&quot; und man meistens Zahlenwerte zwischen 1 und 1000 haben mag?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2410980</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2410980</guid><dc:creator><![CDATA[volkard]]></dc:creator><pubDate>Tue, 29 Jul 2014 09:04:27 GMT</pubDate></item><item><title><![CDATA[Reply to Größen mit Maßeinheiten - wie speichern? on Tue, 29 Jul 2014 09:25:21 GMT]]></title><description><![CDATA[<p>volkard schrieb:</p>
<blockquote>
<p>g für neugrad</p>
</blockquote>
<p>Wird das denn wirklich irgendwo eingesetzt?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2410987</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2410987</guid><dc:creator><![CDATA[oenone]]></dc:creator><pubDate>Tue, 29 Jul 2014 09:25:21 GMT</pubDate></item><item><title><![CDATA[Reply to Größen mit Maßeinheiten - wie speichern? on Tue, 29 Jul 2014 09:33:47 GMT]]></title><description><![CDATA[<p>oenone schrieb:</p>
<blockquote>
<p>volkard schrieb:</p>
<blockquote>
<p>g für neugrad</p>
</blockquote>
<p>Wird das denn wirklich irgendwo eingesetzt?</p>
</blockquote>
<p>Wäre mir neu, daß die Vermesser was anderes nehmen.<br />
edit: <a href="http://www.hs-bochum.de/fb5/baeumker/download/vermessungskundes1-36einseitig.pdf" rel="nofollow">http://www.hs-bochum.de/fb5/baeumker/download/vermessungskundes1-36einseitig.pdf</a></p>
]]></description><link>https://www.c-plusplus.net/forum/post/2410991</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2410991</guid><dc:creator><![CDATA[volkard]]></dc:creator><pubDate>Tue, 29 Jul 2014 09:33:47 GMT</pubDate></item></channel></rss>