AGB  ·  Datenschutz  ·  Impressum  







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

Nullable oder NaN

Ein Thema von freimatz · begonnen am 13. Jan 2023 · letzter Beitrag vom 16. Jan 2023
Antwort Antwort
Seite 1 von 2  1 2      
freimatz

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

Nullable oder NaN

  Alt 13. Jan 2023, 15:33
Hallo,
manchmal habe ich einen Wert als Double, manchmal aber auch nicht. Oft nehme ich dann ein Nullable<>. Könnte man bei einem Double nicht auch NaN nehmen? Das bedeutet doch Not a Number. Wäre eine Zuweisung mit NaN und eine Abfrage mit System.Math.IsNan zuverlässig?
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.063 Beiträge
 
Delphi 12 Athens
 
#2

AW: Nullable oder NaN

  Alt 13. Jan 2023, 15:50
Natürlich.

NaN, Infinity und NegInfinity sind gültige Werte eines Float-Types.


(nur bezüglich Berechnungen und Vergleichen ala = ... da kommt's drauf an, wie die FPU konfiguriert ist, also ob sie dann eine Exception wirft)
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.
  Mit Zitat antworten Zitat
Der schöne Günther

Registriert seit: 6. Mär 2013
6.159 Beiträge
 
Delphi 10 Seattle Enterprise
 
#3

AW: Nullable oder NaN

  Alt 13. Jan 2023, 16:38
Ich bin kein Freund von Dingen wie NaN bei einer Fließkommazahl oder -1 für eine Ganzzahl um etwas wie "Wert ist nicht vorhanden" oder so zu signalisieren.

Wenn es wirklich etwas ist, das fünf Millionen mal aufgerufen wird und jede Millisekunde zählt - Dann meinetwegen. Aber in 99% der Fälle ist das bisschen Overhead für einen Typ wie Nullable<Single> für bessere Quelltext-Lesbarkeit gut investiert.
  Mit Zitat antworten Zitat
Rollo62

Registriert seit: 15. Mär 2007
4.093 Beiträge
 
Delphi 12 Athens
 
#4

AW: Nullable oder NaN

  Alt 13. Jan 2023, 17:02
Ich nutze das schon, da wo es Sinn macht, und die Funktionen die damit arbeiten können kennzeichne ich deutlich als "NaN-Safe".
  Mit Zitat antworten Zitat
freimatz

Registriert seit: 20. Mai 2010
1.444 Beiträge
 
Delphi 11 Alexandria
 
#5

AW: Nullable oder NaN

  Alt 14. Jan 2023, 12:08
Hoi, Danke für alle Rückmeldungen. Den akuten Fall habe ich jetzt anders gelöst. Es bleibt für mich aber schon interessant.
@Günther: Gerade das Nullable finde ich in manchen Fällen nicht so lesbar. Andererseits ist da deutlicher was damit gemeint ist.
Mehr als die Geschwindigkeit sehe ich den Speicherverbrauch. Ein Double benötigt m.W. 8 Byte. Ein Nullable vermute ich mal auf 4 mehr. Intern wird ein String missbraucht. Die Diskussion zu der Implementierung habe ich mal gelesen, geht wohl nicht besser. (Eine native Implementierung von EMB wäre wohl besser aber nicht zu erwarten.)
Wenn man nun ein Array von 10000 Vektoren (x,y,z) hat, dann ist das schon relevant.
@Rollo: wo es Sinn macht ... hast Du ein Beispiel?
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.063 Beiträge
 
Delphi 12 Athens
 
#6

AW: Nullable oder NaN

  Alt 14. Jan 2023, 12:14
So gesehn ... Warum soll man es kompliziertet/aufwändiger machen, wenn es NaN bereits gibt und es keinen Grund gibt es nicht zu benutzen?
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

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

AW: Nullable oder NaN

  Alt 14. Jan 2023, 14:27
Ein Double benötigt m.W. 8 Byte. Ein Nullable vermute ich mal auf 4 mehr.
Bei Win64 dann schon 8...
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.063 Beiträge
 
Delphi 12 Athens
 
#8

AW: Nullable oder NaN

  Alt 14. Jan 2023, 15:22
Die Diskussion zu der Implementierung habe ich mal gelesen, geht wohl nicht besser.
Jetzt, mit den CustomManagedRecords, schon.

Früher konnte man nur mit LongString, Interface oder Variant halbwegs "einfach" arbeiten, da mit automatischem Speichermangement/Initialisierung und Referenzzählung, bzw. automatischem CopyOnWrite.
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.

Geändert von himitsu (14. Jan 2023 um 15:37 Uhr)
  Mit Zitat antworten Zitat
Rollo62

Registriert seit: 15. Mär 2007
4.093 Beiträge
 
Delphi 12 Athens
 
#9

AW: Nullable oder NaN

  Alt 14. Jan 2023, 18:14
@Rollo: wo es Sinn macht ... hast Du ein Beispiel?
Ich nutze das z.B. für simple Messages mit ausschliesslich primitiven Typen, wo das Messaging von Nullable-Records oder anderen Inkarnationen zu aufwändig wäre.
Da könnte man man bei Bedarf auch beim Sender von einem Nulable in ein entsprechendes NaN-Integer wandeln und am Empfänger wieder zurück.

Jedenfalls nutze ich das auch dort wo nicht nur Kommunikation innerhalb der eigenen App in Frage kommt,
sondern es mit anderen Apps/Geräten im Netzwerk kommunizieren muss, unter Umständen mit ganz anderen Programmiersprachen.
Simple Typen wie Integer gehen da eigentlich immer sind in der Regel direkt lesbar und sind leicht zu konvertieren.
  Mit Zitat antworten Zitat
Dennis07

Registriert seit: 19. Sep 2011
Ort: Deutschland
485 Beiträge
 
Delphi 11 Alexandria
 
#10

AW: Nullable oder NaN

  Alt 15. Jan 2023, 17:19
Was für ein Nullable überhaupt?
Das aus Spring4D oder gibt es in Delphi inzwischen ein richtiges in der RTL?
Dennis
  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 22:47 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz