Benutzer mit den meisten Antworten
Datentyp Geschwindigkeit oder Masse etc. - SI-Basiseinheiten

Frage
-
Moin,
in einem Projekt wird viel mit physikalischen Größen gearbeitet, gerechnet und in Tabellen angezeigt.
Die Kindergartebmethode wäre einen ValueType zu nehmen und dann nach Wunsch passend umzuformen.
Ich hätte aber gerne einen Typ wie beim Datums-Typ, also eine Klasse z.b. Speed, die auch je nach Spracheinstellung das passende Ergebnis mit Einheit am Ende bringt, z.b. 100km/h(kpg) bzw. 60mph .
Gibt es da schon Bibliotheken, auch für andere SI-Basiseinheiten?
Wie macht man das wenn man es selber machen muss?
Danke
Antworten
-
Hallo UMorgenw,
SI ist ein metrisches System und nicht sprachabhängig, daher ist auch keine Anpassung gemäß der Spracheinstellungen möglich. SI umfasst 7 Größen, die Geschwindigkeit gehört nicht dazu.
Dein Beispiel der Geschwindigkeit macht auch direkt deutlich, dass es nicht mit Sprachabhängigkeit getan ist, denn ob das metrische System verwendet wird oder nicht hängt wenig von der Sprache ab, sondern mehr vom Ort oder der Region - zudem besteht eine Kontextabhängigkeit, so wird auf der Straße vielleicht km/h verwendet, auf See aber wohl eher Knoten [kt, kn].
Da die Lokalisierung ein komplexeres Thema ist und auch nur teilweise mit dem gefragten Problem zu tun hat, verweise ich hier nur auf einen MSDN Artikel zum Thema: .NET-Anwendungen erfolgreich lokalisieren, Teil 1
Nach dem lesen des MSDN Artikels dürftest Du auch wissen, wie grundlegende Information zur aktuell vom Betriebssystem verwendeten Region abgerufen werden können, dazu gehört unter anderem auch, ob das metrische System oder US-Maße verwendet werden.
Die Darstellung ist typischerweise Teil der Benutzeroberfläche, d.h. die Umrechnung erfolgt bei der Anzeige und bei der Eingabe. Wie das umgesetzt werden könnte hängt letztlich von Details deiner Anwendung ab, bei Regionsspezifischen Maßeinheiten geht dies über die Regionaleinstellungen des Betriebssystem.
Bsp. Abfrage ob die aktuellen Einstellungen metrische Maßeinheiten nutzen oder nicht:
CultureInfo cultureInfo = Thread.CurrentThread.CurrentCulture; RegionInfo regionInfo = new RegionInfo(culture.LCID); bool isMetric = regionInfo.IsMetric;
- Gruß Florian
- Als Antwort vorgeschlagen Dimitar DenkovMicrosoft contingent staff, Administrator Montag, 27. August 2018 06:35
- Bearbeitet Florian Haupt Montag, 27. August 2018 06:38
- Als Antwort markiert Dimitar DenkovMicrosoft contingent staff, Administrator Mittwoch, 5. September 2018 13:16
Alle Antworten
-
Hallo UMorgenw,
SI ist ein metrisches System und nicht sprachabhängig, daher ist auch keine Anpassung gemäß der Spracheinstellungen möglich. SI umfasst 7 Größen, die Geschwindigkeit gehört nicht dazu.
Dein Beispiel der Geschwindigkeit macht auch direkt deutlich, dass es nicht mit Sprachabhängigkeit getan ist, denn ob das metrische System verwendet wird oder nicht hängt wenig von der Sprache ab, sondern mehr vom Ort oder der Region - zudem besteht eine Kontextabhängigkeit, so wird auf der Straße vielleicht km/h verwendet, auf See aber wohl eher Knoten [kt, kn].
Da die Lokalisierung ein komplexeres Thema ist und auch nur teilweise mit dem gefragten Problem zu tun hat, verweise ich hier nur auf einen MSDN Artikel zum Thema: .NET-Anwendungen erfolgreich lokalisieren, Teil 1
Nach dem lesen des MSDN Artikels dürftest Du auch wissen, wie grundlegende Information zur aktuell vom Betriebssystem verwendeten Region abgerufen werden können, dazu gehört unter anderem auch, ob das metrische System oder US-Maße verwendet werden.
Die Darstellung ist typischerweise Teil der Benutzeroberfläche, d.h. die Umrechnung erfolgt bei der Anzeige und bei der Eingabe. Wie das umgesetzt werden könnte hängt letztlich von Details deiner Anwendung ab, bei Regionsspezifischen Maßeinheiten geht dies über die Regionaleinstellungen des Betriebssystem.
Bsp. Abfrage ob die aktuellen Einstellungen metrische Maßeinheiten nutzen oder nicht:
CultureInfo cultureInfo = Thread.CurrentThread.CurrentCulture; RegionInfo regionInfo = new RegionInfo(culture.LCID); bool isMetric = regionInfo.IsMetric;
- Gruß Florian
- Als Antwort vorgeschlagen Dimitar DenkovMicrosoft contingent staff, Administrator Montag, 27. August 2018 06:35
- Bearbeitet Florian Haupt Montag, 27. August 2018 06:38
- Als Antwort markiert Dimitar DenkovMicrosoft contingent staff, Administrator Mittwoch, 5. September 2018 13:16
-
Eventuell sind für dich die Möglichkeiten von F# in dem Zusammenhang interessant, den F# kann mit Maßeinheiten rechnen.
- Gruß Florian