AGB  ·  Datenschutz  ·  Impressum  







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

round(): Invalid Floating Point Operation

Ein Thema von TM. · begonnen am 16. Nov 2010 · letzter Beitrag vom 16. Nov 2010
Antwort Antwort
TM.

Registriert seit: 22. Jul 2006
42 Beiträge
 
#1

round(): Invalid Floating Point Operation

  Alt 16. Nov 2010, 08:21
Delphi-Version: 7
Hallo,

mein round() verhält sich sehr merkwürdig. Nachdem ich die roundTo() schon mit einer eigenen Funktion ersetzen musste (aufgrund des Double- anstatt Extended-Parameters), wird mein Programm nun mit einer 'Invalid floating point operation' gestoppt. Werte, die dazu führen, sind bspw. -153*10^17. Round() verlangt Extended und gibt Int64 zurück, beide haben einen Wertebereich, in den dieser passen würde.
Für mich sehr ärgerlich, da ich absichtlich solche großen Werte aufgrund etwaiger Ungenauigkeiten verwende.

Warum? Was tun?

Danke für eure Hilfe,
TM.
  Mit Zitat antworten Zitat
Benutzerbild von DelphiBandit
DelphiBandit

Registriert seit: 19. Feb 2007
Ort: bei Walsrode
165 Beiträge
 
Delphi 10.4 Sydney
 
#2

AW: round(): Invalid Floating Point Operation

  Alt 16. Nov 2010, 08:39
Wenn mich meine Binärkenntnisse nicht im Stich lassen, dann geht ein Int64 mit Vorzeichen von -2^63 bis 2^63-1. Was da ungefähr, sagt Calc =

-9223372036854775808=19 Stellen entspricht

-153*10^17 ist -15300000000000000000=20 Stellen

Andere Option wäre UInt64, dies geht bis 0..2^64-1, aber damit ist das negative Vorzeichen nicht abzubilden.
Carsten
  Mit Zitat antworten Zitat
gammatester

Registriert seit: 6. Dez 2005
999 Beiträge
 
#3

AW: round(): Invalid Floating Point Operation

  Alt 16. Nov 2010, 08:42
Hallo,

mein round() verhält sich sehr merkwürdig. Nachdem ich die roundTo() schon mit einer eigenen Funktion ersetzen musste (aufgrund des Double- anstatt Extended-Parameters), wird mein Programm nun mit einer 'Invalid floating point operation' gestoppt. Werte, die dazu führen, sind bspw. -153*10^17. Round() verlangt Extended und gibt Int64 zurück, beide haben einen Wertebereich, in den dieser passen würde.
Und was soll daran merkmwürdig sein? -153*10^17 ist halt nun mal -1.6588293*2^63 = -1.6588293*MaxInt64.
  Mit Zitat antworten Zitat
TM.

Registriert seit: 22. Jul 2006
42 Beiträge
 
#4

AW: round(): Invalid Floating Point Operation

  Alt 16. Nov 2010, 10:57
Danke für eure schnelle Antwort - da habe ich den Wertebereich falsch abgelesen.
  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 05:32 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