![]() |
Ausgabe ist falsch, warum?
Hallo, habe ein kleines Problem.
Ich kürze es mal so ab: Wenn Delphi eine Zahl multiplizieren soll, dann kommt ein falsches ergebnis raus
Delphi-Quellcode:
Das Ergebnis ist -306351296
s:='4985770';
min:=(StrToInt(s)*800); Wenn ich aber auf den gleichen weg die Zahl mit 1000 oder 1200 multipliziere, dann kommt das richtige ergebnis. Warum nicht bei 800? Kann mir da einer helfen? MfG Dave729 |
AW: Ausgabe ist falsch, warum?
Was für ein Typ hat min?
|
AW: Ausgabe ist falsch, warum?
Zitat:
min ist Integer s ist String, kommt von Edit1 MfG dave |
AW: Ausgabe ist falsch, warum?
Ja dann ist klar :mrgreen:
Zitat:
Ein Integer geht nun mal nur bis 2^31-1 darüber passiert ein Integerüberlauf (googlen) Abhilfe: Schalte die Überlaufmeldungen ein und benutze Int64 oder vermeide so große Zahlen ;) ![]() |
AW: Ausgabe ist falsch, warum?
Zitat:
Für diese Berechnung sind erstmal nur die Typen der beiden Operanden verantwortlich und dann wird das Ergbnis versucht an "Min" zu übergeben. StrToInt = Integer 800 = unbestimmt (der Compiler nimmt Integer, weil die 800 da reinpaßt) > Ergebnis > Integer * Integer = Integer PS: Genau deswegen soll Embarcadero endlich mal solche Fehlerprüfungen standardmäßig aktivieren. Und die Leerer sollen erstmal die Grundlagen des Debugging vermitteln, bzw. es endlich selber mal lernen und darauf hinweisen, daß man dieses (Überlauf- und Bereichsprüfung) in den Projektoptionen besser mal aktivieren soll, vorallem wenn keine große Ahnung von dieser Materie hat und Fehler vorprogrammiert sind. |
AW: Ausgabe ist falsch, warum?
Also das Problem hab ich nicht lösen können, leider.
Ich hab leider auch Zahlen die etwas größer sind als Millioen. Aber da wird dann eh gerundet. Habt Ihr noch nen Vorschlag?? MfG Dave |
AW: Ausgabe ist falsch, warum?
Wie gesagt:
Zitat:
|
AW: Ausgabe ist falsch, warum?
Zitat:
![]() Such dir den passenden Datentyp aus der alle Bereiche abdeckt und benutze diesen. |
AW: Ausgabe ist falsch, warum?
Und genau deswegen solltes du endlich mal die Überlaufprüfung in den Projektoptionen anschalten, denn diese sagt dir dann, ob ein Typ nicht passt, bzw. zu klein ist.
|
AW: Ausgabe ist falsch, warum?
hat alles geklappt ^^
Danke jungs. Ich dachte erst das ich die Überlaufprüfung eingeschaltet hatte, war aber nicht so :-) und jetzt mach ich es mit int64. Klappt perfect. Danke, ihr seit die besten |
Alle Zeitangaben in WEZ +1. Es ist jetzt 09:37 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