AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Maßeinheiten als Typen

Ein Thema von Ghostwalker · begonnen am 11. Okt 2018 · letzter Beitrag vom 18. Okt 2018
Antwort Antwort
Seite 1 von 2  1 2      
freimatz

Registriert seit: 20. Mai 2010
1.513 Beiträge
 
Delphi 11 Alexandria
 
#1

AW: Maßeinheiten als Typen

  Alt 15. Okt 2018, 17:05
Sorry versteh ich immer noch nicht. Nach http://docwiki.embarcadero.com/RADSt...e_Typenhttp:// hat ein Integer 32-Bit. Ein Double benötigt 64-Bit, davon hat die Mantisse 52 Bit. Das ist immer noch weit mehr als die 32 bei Integer. Ich kann jeden beliebigen Wert eines Integers in einem Double speichern und wieder herausholen ohne Verlust. Anders sieht es bei einem Int64 aus, der hat dann mehr als der Double.

Wir verwenden fast grundsätzlich Double, welche als Länge in Millimeter oder als Bogenmass definiert sind. Umgerechnet werden die nur bei der Ein- und Ausgabe.
  Mit Zitat antworten Zitat
Ghostwalker

Registriert seit: 16. Jun 2003
Ort: Schönwald
1.299 Beiträge
 
Delphi 10.3 Rio
 
#2

AW: Maßeinheiten als Typen

  Alt 15. Okt 2018, 17:21
Sorry versteh ich immer noch nicht. Nach http://docwiki.embarcadero.com/RADSt...e_Typenhttp:// hat ein Integer 32-Bit. Ein Double benötigt 64-Bit, davon hat die Mantisse 52 Bit. Das ist immer noch weit mehr als die 32 bei Integer. Ich kann jeden beliebigen Wert eines Integers in einem Double speichern und wieder herausholen ohne Verlust. Anders sieht es bei einem Int64 aus, der hat dann mehr als der Double.

Wir verwenden fast grundsätzlich Double, welche als Länge in Millimeter oder als Bogenmass definiert sind. Umgerechnet werden die nur bei der Ein- und Ausgabe.
Jain.

Int64 hat, wie double auch, 64-Bit. Sein Ganzzahliger Wertebereich ist aber größer als der von Double. Dafür kann ich den kleineren Wertebereich von Double genauer auflösen. Alternativ kann man auch Extended verwenden, der dann 80 Bit(32-Bit win) hat und noch genauer auflöst.

Ob man nun Fließkomma oder Ganzzahlige Werte benutzt, kommt auf den Context an. u.U. ist auch eine Festkomma Aritmethik eine Option.
Uwe
e=mc² or energy = milk * coffee²
  Mit Zitat antworten Zitat
Ghostwalker

Registriert seit: 16. Jun 2003
Ort: Schönwald
1.299 Beiträge
 
Delphi 10.3 Rio
 
#3

AW: Maßeinheiten als Typen

  Alt 16. Okt 2018, 06:03
Ich hab den Vorschlag von Uwe Raabe mal aufgegriffen und das ganze testhalber mal wie folgt
aufgebaut:

Delphi-Quellcode:
TYPE
  TGramm = -9223372036854775807..9223372036854775807;
  TKilo = -9223372036854775..9223372036854775;
  TTonne = -9223372036854..9223372036854;
  TMegat = -9223372036..9223372036;

  TGewicht = Record
    private
      fvalue : int64;

    strict private
      Class constructor Create; //<-- Hier werden die Classvars entsprechend belegt

    private class var
        GrammPerKilo : int64;
        GrammPerTonne: int64;
        GrammPerMegat: int64;

    public

       Class Operator Implicit(const value:int64):TGewicht;
       Class Operator Implicit(const value:TGewicht):int64;

       Class Operator Implicit(const value:TGramm):TGewicht;
       Class Operator Implicit(const value:TKilo):TGewicht;
       Class Operator Implicit(const value:TTonne):TGewicht;
       Class Operator Implicit(const value:TMegat):TGewicht;

       Class Operator Add(const left,right:TGewicht):TGewicht;
       Class Operator Subtract(const left,right:TGewicht):TGewicht;
  End;
Damit hätte ich die meisten Anforderungen eigentlich abgedeckt. Was meint ihr ?
Uwe
e=mc² or energy = milk * coffee²
  Mit Zitat antworten Zitat
freimatz

Registriert seit: 20. Mai 2010
1.513 Beiträge
 
Delphi 11 Alexandria
 
#4

AW: Maßeinheiten als Typen

  Alt 16. Okt 2018, 06:57
Welche Anforderungen? Die des Ausgangspostings? Dann meine ich Ja.
Bei den Anforderungen die ich an sowas hätte Nein. Wenn ich 1437 Gramm hätte und das als Kilogramm wollte, dann würde ich schon 1.437 Kilogramm wollen.

Die private class var verstehe ich nicht so recht. Reichen da nicht Konstanten?
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.758 Beiträge
 
Delphi 12 Athens
 
#5

AW: Maßeinheiten als Typen

  Alt 16. Okt 2018, 07:50
Wenn ich 1437 Gramm hätte und das als Kilogramm wollte, dann würde ich schon 1.437 Kilogramm wollen.
Ich kann zwar die Implementierung hier nicht sehen, aber nach meinem Vorschlag sollte jedenfalls genau das dabei herauskommen. Zumindest ist das in meinem Beispiel von #14 so.
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
Benutzerbild von KodeZwerg
KodeZwerg

Registriert seit: 1. Feb 2018
3.691 Beiträge
 
Delphi 11 Alexandria
 
#6

AW: Maßeinheiten als Typen

  Alt 16. Okt 2018, 08:08
Wir sind doch erst auf Seite 7, da kommt noch mehr :-]
Gruß vom KodeZwerg
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.758 Beiträge
 
Delphi 12 Athens
 
#7

AW: Maßeinheiten als Typen

  Alt 16. Okt 2018, 08:19
Wenn ich 1437 Gramm hätte und das als Kilogramm wollte, dann würde ich schon 1.437 Kilogramm wollen.
Ich sehe gerade, daß dort mit Int64 statt einem Float-Typ gearbeitet wird. Dann kann das natürlich wirklich nicht funktionieren.
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
Benutzerbild von Sherlock
Sherlock

Registriert seit: 10. Jan 2006
Ort: Offenbach
3.821 Beiträge
 
Delphi 12 Athens
 
#8

AW: Maßeinheiten als Typen

  Alt 16. Okt 2018, 09:29
Verstehe ich das richtig, daß hier die eierlegende Wollmilchsau gesucht wird? Das ist sowas von nicht KISS, jeder Vorschlag dafür würde bei uns im Keim erstickt werden. Aber für akademische Diskussionen sicherlich schön.

Sherlock
Oliver
Geändert von Sherlock (Morgen um 16:78 Uhr) Grund: Weil ich es kann
  Mit Zitat antworten Zitat
TiGü

Registriert seit: 6. Apr 2011
Ort: Berlin
3.079 Beiträge
 
Delphi 10.4 Sydney
 
#9

AW: Maßeinheiten als Typen

  Alt 16. Okt 2018, 09:56
Delphi-Quellcode:
TYPE
  TGramm = -9223372036854775807..9223372036854775807;
  TKilo = -9223372036854775..9223372036854775;
  TTonne = -9223372036854..9223372036854;
  TMegat = -9223372036..9223372036;
Damit hätte ich die meisten Anforderungen eigentlich abgedeckt. Was meint ihr ?
Wirklich? Ein ganzzahliger negativer Wertebereich? Für Gewicht?

"Ich hätte gerne minus 3 kg Gehacktes!"

Hoffentlich sieht kein Kollege von dir diesen Thread.
  Mit Zitat antworten Zitat
freimatz

Registriert seit: 20. Mai 2010
1.513 Beiträge
 
Delphi 11 Alexandria
 
#10

AW: Maßeinheiten als Typen

  Alt 16. Okt 2018, 10:25
Wirklich? Ein ganzzahliger negativer Wertebereich? Für Gewicht?
"Ich hätte gerne minus 3 kg Gehacktes!"
Das bedeutet dann "Ich würde gerne 3 kg Gehacktes zurückgeben."
Wirft zwar eine ENotHygienicException, aber was solls
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 12:00 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz