AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Delphi-PRAXiS - Lounge Klatsch und Tratsch Warum kommt bei Gleitkommadivision durch 0 eine Exception?
Thema durchsuchen
Ansicht
Themen-Optionen

Warum kommt bei Gleitkommadivision durch 0 eine Exception?

Ein Thema von Sherlock · begonnen am 30. Mai 2017 · letzter Beitrag vom 30. Mai 2017
Antwort Antwort
Benutzerbild von Sherlock
Sherlock

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

Warum kommt bei Gleitkommadivision durch 0 eine Exception?

  Alt 30. Mai 2017, 12:20
Wenn ich in C# ein float durch 0 teile erhalte ich Infinity. Gemäß IEEE 754, ein Standard an den sich MS erklärtermaßen hält, ist das auch das erwartete Ergebnis. Bei Delphi erhalten wir (gemäß Schulmathematik erwartungskonform "das gibt es nicht") eine Exception. Ich kann beiden Standpunkten folgen, denn schließlich ist 0,000000000000000000000000001 praktisch 0 aber 1/0,000000000000000000000000001 ist eine richtig große Zahl, warum dann nicht 1/0 als unendlich ausgeben?

Wie seht Ihr das Verhalten? Macht es die Arbeit in C# zB leichter oder schwerer? Vermisst Ihr das Verhalten in ObjectPascal?

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

Registriert seit: 13. Okt 2010
Ort: Bayern
490 Beiträge
 
Delphi 10.4 Sydney
 
#2

AW: Warum kommt bei Gleitkommadivision durch 0 eine Exception?

  Alt 30. Mai 2017, 12:30
Im Ernst?
Na gut: mir ist die Exception lieber, weil ich unmißverständlich darauf gestoßen werde, daß ich eine ungültige Situation habe, die es zu klären gilt. Andernfalls käme es zu verfälschten Ergebnissen.
Nr.1 Delphi-Tool: [F7]
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.222 Beiträge
 
Delphi 10.4 Sydney
 
#3

AW: Warum kommt bei Gleitkommadivision durch 0 eine Exception?

  Alt 30. Mai 2017, 12:36
Das wird über die ExceptionMask gesteuert.
D.h. du kannst das C#-Verhalten damit auch in Delphi bekommen.
Delphi lässt diese Maske unverändert, C# wird es (vermutlich wegen DirectDraw und Co.) Standardmäßig auf "schmeiß keine Exception" setzen.
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu
Online

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

AW: Warum kommt bei Gleitkommadivision durch 0 eine Exception?

  Alt 30. Mai 2017, 12:57
Jupp, auch in Delphi kennen die Floats (Single/Double/Extendet) solche Zustände,
aber, wie bereits genannt, wir das nicht standardmäßig als "Fehlerwert" gesetzt, sondern löst die Fehlerbehandlung aus.

Infinity
NegInfinity
NaN
Ein Therapeut entspricht 1024 Gigapeut.
  Mit Zitat antworten Zitat
Benutzerbild von p80286
p80286

Registriert seit: 28. Apr 2008
Ort: Stolberg (Rhl)
6.659 Beiträge
 
FreePascal / Lazarus
 
#5

AW: Warum kommt bei Gleitkommadivision durch 0 eine Exception?

  Alt 30. Mai 2017, 13:03
solange ich nicht "Unendlich" erwarte, ist mir die Exception lieber.
(irgendein Wert ist 0 geworden und ich hab nicht daran gedacht)

Gruß
K-H
Programme gehorchen nicht Deinen Absichten sondern Deinen Anweisungen
R.E.D retired error detector
  Mit Zitat antworten Zitat
Fritzew

Registriert seit: 18. Nov 2015
Ort: Kehl
678 Beiträge
 
Delphi 11 Alexandria
 
#6

AW: Warum kommt bei Gleitkommadivision durch 0 eine Exception?

  Alt 30. Mai 2017, 13:46
Mir sind Exceptions auch lieber, dann kann man da wo das Problem auftritt auch darauf reagieren.
INFINITE oder auch NAN verschleppen das Problem meiner Meinung nach nur an eine andere Stelle.
Das ganze wird dann lustig wenn man in einer mixed Umgebung arbeitet, sprich eventuell Dlls aus anderen Sprachen einsetzt.
Da kann es schon mal passieren das die Dll das Controlword der FPU ändert. Ganz spassig ist, das in der RTL die FPU Funktionen
nicht Threadsave sind. Wir haben hier schon die tollsten Sachen gesehen. Da gibt es seit Jahren QC's dazu.
Fritz Westermann
  Mit Zitat antworten Zitat
Antwort Antwort


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 17:30 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